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

这意味着其他事情正在发生。你必须发布一个完整的问题最小再现案例。 –

相关问题