Kotlin / kotlinx.html

Kotlin DSL for HTML
Apache License 2.0
1.61k stars 131 forks source link

Cannot load kotlinx-html-js #92

Open feliperce opened 6 years ago

feliperce commented 6 years ago

I think it's a bug.because I can load it using gradle, but I can't load it using nothing (only inteliij, without gradle/maven), I already imported the jar and it is working, I can use all jar functions, but when I try to test on navigator (chrome/firefox/opera all tested...) I get the following error:

Uncaught Error: Error loading module 'KotlinToJavaScript'. Its dependency 'kotlinx-html-js' was not found. Please, check whether 'kotlinx-html-js' is loaded prior to 'KotlinToJavaScript'.
    at KotlinToJavaScript.js:5

I understand, but the kotlin-html-js are on the correct place: a

And I put it on <script tag:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Kotlin to Html!</title>
</head>
    <body>

        Que nota você daria para o Kotlin? (0-10) </br>
        <input type="text" id="note">
        <input type="submit" id="submit" value="Enviar">

        <div id="container">

        </div>

        <script type="text/javascript" src="out/production/KotlinToJavaScript/lib/kotlin.js"></script>
        <script type="text/javascript" src="out/production/KotlinToJavaScript/lib/kotlinx-html-js.js"></script>
        <script type="text/javascript" src="out/production/KotlinToJavaScript/KotlinToJavaScript.js"></script>
    </body>
</html>
poloynikov commented 4 years ago

возможно вам это поможет. Если посмотрите на начало файла kotlinx-html-js.js, то вероятно у вас будет что то на подобие:

(function (root, factory) { if (typeof define === 'function' && define.amd) define(['exports', 'kotlin'], factory); else if (typeof exports === 'object') factory(module.exports, require('kotlin')); else { if (typeof kotlin === 'undefined') { throw new Error("Error loading module 'kotlinx-html-js'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'kotlinx-html-js'."); } root['kotlinx-html-js'] = factory(typeof this['kotlinx-html-js'] === 'undefined' ? {} : this['kotlinx-html-js'], kotlin); } }

так вот у меня с css файлом похожая ситуация была и я добавил в начало файла css похожую конструкцию начала файла из kotlinx-html-js! Но так же внимание обратите, что и концовку тоже нужно подредактировать! Так же нужно помнить, что как только у вас в браузере будет исправлена ошибка загрузки вашего js файла, скопируйте его в другое место, так как при build project у вас со 100% вероятность исправленный файл перезапишется и нужно будет повторять все по новой. В моем js начало выглядит так: (function (root, factory) { if (typeof define === 'function' && define.amd) define(['exports', 'kotlin'], factory); else if (typeof exports === 'object') factory(module.exports, require('kotlin')); else { if (typeof kotlin === 'undefined') { throw new Error("Error loading module 'kotlin-css-js'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'kotlin-css-js'."); } root['kotlin-css-js'] = factory(typeof this['kotlin-css-js'] === 'undefined' ? {} : this['kotlin-css-js'], kotlin); } }(this,function (_, Kotlin) { 'use strict'; var Kind_CLASS = Kotlin.Kind.CLASS; ...

===== а концовка так: ======= ... zIndex = new CSSProperty(); Kotlin.defineModule('kotlin-css-js', ); return ; })); //(module.exports, require('kotlin') //# sourceMappingURL=kotlin-css-js.js.map

poloynikov commented 4 years ago

Пожалуйста, если у кого нибудь будем время, подскажите, как можно в gradle сделать так чтобы, после компиляции JS модуля, можно было автоматически внести изменения в созданные js файлы, а именно добавить изменения в его начало и в конце файла (в сообщении выше я делал это ручками и думаю, что при окончательной сборки тоже придется ручками изменять жирный jar). Я только учусь, так что, если у Вас будет возможность, с можете ли написать gradle task которая вносить изменения в файл. do last или do first я вроде бы разобрался как использовать, чтобы вашу gradle task вставить после компиляции модуля js. Спсибо за внимание