如何告诉Closure编译器在单独的文件中存在某些内容?

时间:2016-09-11 09:05:34

标签: javascript google-closure-compiler

我有一个包含library.jsmycode.js的项目。我的代码包括

let x = new LibraryObject ();

我尝试通过Google Closure投放mycode.js投诉

ERROR - variable LibraryObject is undeclared

当给出-W VERBOSE标志时。

我可以将这两个文件连接到libraryandmycode.js但我想将它们分开,因为原因。我尝试在LibraryObject中声明mycode.js,但后来我得到了一个"非法重新声明的变量"错误。

如果不修改library.js,我是否可以向mycode.js添加一些内容,以确定LibraryObject是否存在,但是没有重新声明它?

这会导致浏览器出现问题,但我希望验证能够单独传递每个文件以及它们何时一起传递。

标准是在严格解释下不会产生任何错误,无论是单独解析两个脚本中的任何一个,还是同时解析这两个脚本。

这可能吗?

2 个答案:

答案 0 :(得分:1)

Extern文件用于向编译器提供未包含在编译中的符号的类型信息。外部文件是有效的JavaScript,但只包含类型定义 - 不要尝试使用库本身。

使用--externs标志将extern文件传递给编译器。

compiler projects hosts several extern files。也可以write your own

如果您正在寻找示例,jQuery externs维护良好。

答案 1 :(得分:-1)

这就是我的工作方式。

def calc(n, num1, num2):

    if n == '+':
        return num1 + num2

    elif n == '-':
        return num1 - num2

    elif n == 'x':
        return num1 * num2

    elif n == '/':
        return num1 / num2

我绝对没有声明Test()。你使用的是其他版本吗?