0

我有很多JS ES6通過關閉編譯(高級),在一個單一的庫文件編譯的模塊。如何從由Closure Compiler編譯的模塊中導出符號?

我未能使用/** @export */或使用goog.exportSymbol('whatever', whatever)將某些符號導出到HTML頁面中的未編譯JavaScript。

怎麼辦呢?

雷馬克:如果我在所有的模塊更換ES6 import/export通過goog.require/goog.provide,它的工作原理和我可以成功地在HTML頁面中使用這些符號。

回答

0

經過進一步調查,我找到了解決方案。

雖然在控制檯瀏覽器中加載沒有任何錯誤(當然除了undefined whatever),沒有執行我的圖書館。我只是簡單地將封閉庫移到文件堆棧之前進行編譯,然後我的庫被正確導出的瀏覽器正確執行。

導出符號的3種方法在編譯es6模塊中工作:/** @export */ whatevergoog.exportSymbol('whatever', whatever)window['whatever'] = whatever。前兩個是第三個方便的方法。

堡詳情見No exported symbols with es6 modules library compiled by Closure Compiler

0

你不能在一個模塊中使用@export,但goog.exportSymbol應該工作。您的其他選項是手動導出它們:

window['whatever'] = whatever; 
+0

無論'goog.exportSymbol'也不'窗口[ '什麼'] = whatever'工作對我來說:當我把'Object.keys(窗口)'在瀏覽器控制檯,我只能看到模糊的符號(相同的代碼使用'goog.require' /'goog.provide'代替ES6'import' /'export'時產生正確是非模糊符號)。 –

+0

這意味着其他事情正在發生。你必須發佈一個完整的問題最小再現案例。 –

相關問題