我如何告诉 Closure 编译器某些东西存在于单独的文件中?
How can I tell Closure compiler that something exists in a separate file?
我有一个项目,其中包括 library.js
和 mycode.js
。我的代码包括
let x = new LibraryObject ();
我尝试了 运行 mycode.js
通过 Google Closure 抱怨
ERROR - variable LibraryObject is undeclared
当给出 -W VERBOSE
标志时。
我可以将这两个文件连接成 libraryandmycode.js
,但由于某些原因我想将它们分开。我尝试在 mycode.js
中声明 LibraryObject
,但随后出现 "illegal redeclared variable" 错误。
在不修改 library.js
的情况下,我可以向 mycode.js
添加一些内容来确定 LibraryObject
存在,但不重新声明它吗?
这不会在浏览器中造成任何问题,但我希望对每个文件分别进行验证,以及在将它们放在一起时进行验证。
标准是在严格解释下,无论两个脚本中的任何一个是单独解析的,还是一起解析的,都不会产生错误。
这可能吗?
这就是我的工作方式。
java -jar closure-compiler-v20160713.jar
The compiler is waiting for input via stdin.
let a= new Test ();
^Z
var a=new Test;
我绝对没有声明 Test() 。您使用的是其他版本吗?
外部文件用于向编译器提供未包含在编译中的符号的类型信息。外部文件有效 JavaScript,但仅包含类型定义 - 不要尝试使用库本身。
使用 --externs
标志将外部文件传递给编译器。
compiler projects hosts several extern files. It's also possible to write your own.
如果您正在寻找示例,jQuery externs 维护得很好。
我有一个项目,其中包括 library.js
和 mycode.js
。我的代码包括
let x = new LibraryObject ();
我尝试了 运行 mycode.js
通过 Google Closure 抱怨
ERROR - variable LibraryObject is undeclared
当给出 -W VERBOSE
标志时。
我可以将这两个文件连接成 libraryandmycode.js
,但由于某些原因我想将它们分开。我尝试在 mycode.js
中声明 LibraryObject
,但随后出现 "illegal redeclared variable" 错误。
在不修改 library.js
的情况下,我可以向 mycode.js
添加一些内容来确定 LibraryObject
存在,但不重新声明它吗?
这不会在浏览器中造成任何问题,但我希望对每个文件分别进行验证,以及在将它们放在一起时进行验证。
标准是在严格解释下,无论两个脚本中的任何一个是单独解析的,还是一起解析的,都不会产生错误。
这可能吗?
这就是我的工作方式。
java -jar closure-compiler-v20160713.jar
The compiler is waiting for input via stdin.
let a= new Test ();
^Z
var a=new Test;
我绝对没有声明 Test() 。您使用的是其他版本吗?
外部文件用于向编译器提供未包含在编译中的符号的类型信息。外部文件有效 JavaScript,但仅包含类型定义 - 不要尝试使用库本身。
使用 --externs
标志将外部文件传递给编译器。
compiler projects hosts several extern files. It's also possible to write your own.
如果您正在寻找示例,jQuery externs 维护得很好。