0

私は、Closure Compiler(Advancedレベル)によって1つのライブラリファイルでコンパイルされた多くのjs es6モジュールを持っています。Closure Compilerでコンパイルされたモジュールからシンボルをエクスポートするには?

/** @export */を使用していくつかのシンボルをエクスポートできなかったか、またはHTMLページのコンパイルされていないjavascriptにgoog.exportSymbol('whatever', whatever)を使用できませんでした。

どうすればよいですか?

レマルク:私はすべてのモジュールでgoog.require/goog.provideによってES6 import/exportを交換した場合、それが動作し、私は成功したHTMLページでこれらのシンボルを使用することができます。

答えて

0

さらに調査したところ、解決策が見つかりました。

コンソールにエラーなしでブラウザにロードされましたが(もちろんundefined whateverを除く)、私のライブラリは実行されませんでした。私は単にクロージャーライブラリをコンパイルするファイルスタックの前に移動し、シンボルが正しくエクスポートされた状態でライブラリがブラウザによって適切に実行されました。

シンボルをエクスポートする3つの方法は、コンパイル済みのes6モジュール(/** @export */ whatevergoog.exportSymbol('whatever', whatever)window['whatever'] = whatever)で機能しています。最初の2つは、3番目のもののための便利な方法です。私は、ブラウザのコンソールに `` Object.keys(ウィンドウ)に置くとき、私は:

フォート詳細は私のためにwhatever`仕事を= No exported symbols with es6 modules library compiled by Closure Compiler

0

モジュール内で@exportを使用することはできませんが、goog.exportSymbolは動作します。あなたの別の選択肢は、手動でエクスポートすることです。

window['whatever'] = whatever; 
+0

'goog.exportSymbol'も'ウィンドウのいずれも[ '何']を参照します(同じコードは、es6 'import' /' export'の代わりに 'goog.require' /' goog.provide'を使ったときに、曖昧でないシンボルを生成します)。 –

+0

これは何か他のことが起こっていることを意味します。あなたは、この問題の完全な最小限の複製事例を投稿する必要があります。 –

関連する問題