Javascript 闭包编译器抛出;变量多次声明;对于不同的文件

Javascript 闭包编译器抛出;变量多次声明;对于不同的文件,javascript,google-closure-compiler,Javascript,Google Closure Compiler,到目前为止,我相信这是一个简单的设置;我有core.js、signup.js和login.js,其中假设在signup.js和login.js之前加载核心,并且login.js和signup.js不会同时加载到同一页面上 这是我用来将JS文件编译成带有--module标志的不同模块的命令 java -jar ../../compilers/closure-compiler.jar \ --module core:1: --js ../../js/core.js \ --module signup

到目前为止,我相信这是一个简单的设置;我有
core.js
signup.js
login.js
,其中假设在
signup.js
login.js
之前加载核心,并且
login.js
signup.js
不会同时加载到同一页面上

这是我用来将JS文件编译成带有
--module
标志的不同模块的命令

java -jar ../../compilers/closure-compiler.jar \
--module core:1: --js ../../js/core.js \
--module signup:1:core: --js ../../js/signup.js \
--module login:1:core: --js ../../js/login.js \
--compilation_level ADVANCED_OPTIMIZATIONS \
--externs ../../externs/jquery-3.3.js \
--externs ../../externs\sweetalert2.js \
--externs ../../externs\grecaptcha.js
每个
login.js
signup.js
都有自己的表单,所以我在每个表单中都有一个名为
$form
的变量

var $Form = $('#login');
但是,在我的文件上运行该命令会出现以下错误

../../js/login.js:13: ERROR - Variable $Form declared more than once. First occurrence: ../../js/signup.js
var $Form = $('#login');
    ^^^^^^^^^^^^^^^^^^^

我是否在使用
--module
标志时出错,或者遗漏了一些指示这些文件从未接触过的内容?或者我应该养成习惯,从每个特定于子/页面的JS文件中预先设置变量,比如使用
$SignUp\u Form
$Login\u Form
命名?

模块标志拆分文件。它没有给出文件加载在单独页面上的任何指示


您最好的选择是使用不同的变量名,使用函数包装器隔离作用域,或者使用commonjs或es6模块。

这就是我想它一定是的,这是我在此期间一直在做的事情,我将如何继续这样做