我在单个库文件中有Closure Compiler(高级)编译的许多js es6模块。
我无法使用/** @export */
或使用goog.exportSymbol('whatever', whatever)
将某些符号导出为HTML页面中未编译的javascript。
怎么做?
Remarque:如果我在所有模块中用import
/ export
替换es6 goog.require
/ goog.provide
,它就可以工作,我可以在HTML页面中成功使用这些符号。
答案 0 :(得分:1)
经过进一步调查,我找到了解决方案。
虽然在浏览器中加载时没有任何错误(当然除了undefined whatever
),但是我的库没有被执行。我只是将闭包库移到要编译的文件堆栈之前,然后浏览器正确执行我的库,并正确导出我的符号。
导出符号的3种方法在编译的es6模块中有效:/** @export */ whatever
,goog.exportSymbol('whatever', whatever)
,window['whatever'] = whatever
。前两个是第三个方便的方式。
更多细节见No exported symbols with es6 modules library compiled by Closure Compiler
答案 1 :(得分:0)
您无法在模块中使用@export
,但goog.exportSymbol
应该有效。您的另一个选择是手动导出它们:
window['whatever'] = whatever;