【发布时间】:2020-10-25 08:13:36
【问题描述】:
我正在尝试使用 Closure Compiler 来最小化和验证我的 JavaScript 库,但我正在努力解决一个问题。我创建了一个小项目来突出这个问题。这是我的库的带有公共 API 的 externs 文件。我是这样定义的:
https://developers.google.com/closure/compiler/docs/externs-and-exports
/**
* @fileoverview Public API of my-lib.js
*
* @externs
*/
const myLib = {};
myLib.foo = function() {};
这是实现:
// const myLib = {};
myLib.foo = function() {
console.log("foo");
};
所以问题是,如果我取消注释第一行,我会收到此错误:
my-lib.js:1:6: ERROR - [JSC_REDECLARED_VARIABLE_ERROR] Illegal redeclared variable: myLib
1| const myLib = {};
^^^^^^^^^^
如果我不这样做,输出如下所示:
(function(){myLib.foo=function(){console.log("foo")};})()
这很好,因为 myLib.foo 没有被重命名,所以外部变量正在工作,但同时 myLib 命名空间还没有创建。
解决此类问题的最佳做法是什么,或者如果没有,也许有一些解决方法?
我把这个例子推到了github:
【问题讨论】:
标签: javascript google-closure-compiler transpiler