如何从 Closure Compiler 编译的模块中导出符号?

How to export symbols from modules compiled by Closure Compiler?

我在一个库文件中有很多由 Closure Compiler(高级)编译的 js es6 模块。

我无法使用 /** @export */ 或使用 goog.exportSymbol('whatever', whatever) 将某些符号导出到 HTML 页中未编译的 javascript。

怎么做?

备注:如果我在所有模块中将 es6 import/export 替换为 goog.require/goog.provide,它会起作用,我可以在 HTML页。

您不能在模块中使用 @export,但 goog.exportSymbol 应该可以。您的另一个选择是手动导出它们:

window['whatever'] = whatever;

经过进一步调查,我找到了解决方案。

虽然在浏览器中加载时在控制台中没有任何错误(当然 undefined whatever 除外),但我的库没有执行。我只是将闭包库移动到要编译的文件堆栈之前,然后浏览器正确执行我的库并正确导出我的符号。

导出符号的 3 种方法在已编译的 es6 模块中有效:/** @export */ whatevergoog.exportSymbol('whatever', whatever)window['whatever'] = whatever。前两个是第三个的方便方法。

堡垒详情见