問題タブ [kotlin-js-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
553 参照

javascript - JavaScriptでエクスポートされたクラスをKotlin/JSに変換するには?

私は JS と Kotlin/JS が初めてです。例から、Obsidianのプラグイン用の次の最小限の作業 Javascript コードがあります。期待どおりに動作します:

私は言語を知っているので、Kotlin を使用してこのプラグインを拡張したいと考えていましたが、これを Kotlin/JS に変換する際に問題が発生しました。これまでの私のアプローチ:

実行可能なプロジェクトは、こちらの Github にあります。を実行gradle buildして、ビルド フォルダーを生成します。ブラウザーのステップで失敗しますが、そのステップは必要ありません。ビルド後、生成された js ファイルはbuild\js\packages\main\kotlin\main.js.

main.kt

編集:@S.Janssenのコメントのおかげで、モジュールタイプをumdに切り替えました

build.gradle.kts

で実行できる結果は実際には必要ありませんがbrowser、定義がなければbrowser、js ファイルも生成されません。そのbrowser部分では、と言って例外がスローされますCan't resolve 'obsidian' in 'path\kotlin'。ただし、少なくとも .js ファイルは の下に作成されbuild/js/packages/test/kotlin/test.jsます。しかし、コードは私の期待したコードとは完全に異なっており、有効なプラグイン コードとしてオブシディアンに受け入れられていません。他のいくつかのgradleオプションも試しました。「umd」、「amd」、「plain」、IR の代わりのレガシー コンパイラ、ブラウザの代わりの nodejs など。しかし、実行可能な js ファイルを作成するものは何もありません。エラー メッセージが異なります。従来のコンパイラでは、kotlin.js ファイルが必要であり、フォルダのすぐ隣に配置したり、コンテンツをスクリプトにコピーしたりしても、見つけることができません。

上記の Javascript コードと機能的に似たコードを取得するにはどうすればよいですか? オーバーヘッドがあることは理解していますが、現在生成されているコードは、私の理解ではクラスを定義またはエクスポートすることさえありません。

obisidan デバッガーから表示されるエラー メッセージ:

生成されたコード: