Javascript 如何从闭包编译器编译的模块中导出符号?
我在一个库文件中有许多由闭包编译器(高级)编译的JSES6模块 我无法使用Javascript 如何从闭包编译器编译的模块中导出符号?,javascript,ecmascript-6,google-closure-compiler,google-closure-library,es6-modules,Javascript,Ecmascript 6,Google Closure Compiler,Google Closure Library,Es6 Modules,我在一个库文件中有许多由闭包编译器(高级)编译的JSES6模块 我无法使用/**@export*/或使用goog.exportSymbol('whatever',whatever)将一些符号导出到HTML页面中未编译的javascript 怎么做 Remarque:如果我将es6import/export替换为goog.require/goog.provide在所有模块中都有效,我可以在HTML页面中成功使用这些符号。您不能在模块中使用@export,但goog.exportSymbol应该有效
/**@export*/
或使用goog.exportSymbol('whatever',whatever)
将一些符号导出到HTML页面中未编译的javascript
怎么做
Remarque:如果我将es6
import
/export
替换为goog.require
/goog.provide
在所有模块中都有效,我可以在HTML页面中成功使用这些符号。您不能在模块中使用@export
,但goog.exportSymbol
应该有效。您的另一个选项是手动导出它们:
window['whatever'] = whatever;
经过进一步调查,我找到了解决办法 虽然在浏览器中加载,但控制台中没有任何错误(当然,除了
未定义的任何内容),我的库没有执行。我只是将闭包库移到要编译的文件堆栈之前,然后浏览器正确地执行我的库,并正确地导出我的符号
导出符号的3种方法在已编译的es6模块中工作:/**export*/whatever
,goog.exportSymbol('whatever',whatever)
,window['whatever']=whatever
。前两个是第三个的便捷方式
有关更多详细信息,请参见goog.exportSymbol
或window['which']=which
对我有用:当我在浏览器控制台中放置Object.keys(window)
时,我只能看到模糊的符号(当使用goog.require
/goog.provide
而不是es6import
/export
时,相同的代码会生成正确的未模糊符号)。这意味着还有其他事情正在发生。您必须发布该问题的完整最小复制案例。