Javascript 跳过闭包编译器中的全局变量冲突

Javascript 跳过闭包编译器中的全局变量冲突,javascript,node.js,google-closure-compiler,Javascript,Node.js,Google Closure Compiler,我正在使用HTML5 WebWorkers,我遇到了这样的问题(在使用闭包编译器编译脚本时): 我有两个文件(.js),其中包含以下代码: ... var encoder = null; ... 换句话说,我有两个同名的全局变量 这些文件将被用作我想要启动的两个worker的源,正如我所知,这两个文件都将在各自的范围内执行,并且在运行时不会发生冲突 还有一个条件是,我希望一次编译两个文件(模块) --module module1:1 --js file --module module2

我正在使用HTML5 WebWorkers,我遇到了这样的问题(在使用闭包编译器编译脚本时):

我有两个文件(.js),其中包含以下代码:

...

var encoder = null;

...
换句话说,我有两个同名的全局变量

这些文件将被用作我想要启动的两个worker的源,正如我所知,这两个文件都将在各自的范围内执行,并且在运行时不会发生冲突

还有一个条件是,我希望一次编译两个文件(模块)

--module module1:1

--js file

--module module2:1

--js file2.js
但是,闭包编译器检测到这个冲突,并说module2应该依赖于module1,因为两者都有相同的全局变量


我该怎么办?

有几种不同的选择:

  • 将变量用作全局(窗口)对象的属性。定义如下:
    window.encoder=window['encoder']|{}
  • @suppress{duplicate}
    注释添加到第二个变量定义中
  • 添加一个立即执行的匿名函数包装器,将变量定义移出全局范围。然后,您可能需要显式导出变量以全局重新公开它

  • 有几种不同的选择:

  • 将变量用作全局(窗口)对象的属性。定义如下:
    window.encoder=window['encoder']|{}
  • @suppress{duplicate}
    注释添加到第二个变量定义中
  • 添加一个立即执行的匿名函数包装器,将变量定义移出全局范围。然后,您可能需要显式导出变量以全局重新公开它

  • 闭包编译器显示的是可以忽略的错误还是警告?我尝试过使用“静默”模式,但不起作用。闭包编译器显示的是可以忽略的错误还是警告?我尝试过使用“静默”模式,但不起作用。谢谢你,查德,你对@suppress annotation的建议正是我需要的。谢谢你,查德,你对@suppress annotation的建议正是我需要的。