【问题标题】:Closure compiler dependencies example doesn't work关闭编译器依赖项示例不起作用
【发布时间】:2015-09-23 17:01:18
【问题描述】:

我几天来一直在努力让this page 中的示例正常工作,但甚至无法正确编译一个示例。

// File 1 - icecream.js
goog.provide('ice.cream');

// File 2 - cone.js
goog.provide('waffle.cone');

// File 3 - shop.js
goog.provide('ice.cream.Shop');
goog.require('ice.cream');
goog.require('waffle.cone');

我已将 compiler.jar 添加到同一文件夹并尝试运行命令:

java -jar compiler.jar --js shop.js --js icecream.js --js cone.js

但是,结果还是报错:

C:\Users\username\Desktop\test>java -jar compiler.jar --js shop.js --js icecream.js --js cone.js
shop.js:3: ERROR - required "ice.cream" namespace not provided yet
goog.require('ice.cream');
^

shop.js:4: ERROR - required "waffle.cone" namespace not provided yet
goog.require('waffle.cone');
^

2 error(s), 0 warning(s)

我错过了什么?为什么这个例子不起作用?

这是我的测试项目:https://github.com/roydukkey/moist/tree/stackoverflow-32745379

【问题讨论】:

    标签: google-closure-compiler


    【解决方案1】:

    您的编译命令缺少dependency management flags

    java -jar compiler.jar --js shop.js --js icecream.js
        --js cone.js --only_closure_dependencies
        --closure_entry_point="ice.cream.Shop"
    

    【讨论】:

    • 您的文件包含 UTF-8 BOM 作为第一个字符。要么删除它,要么将你的 goog. 语句从第一行移开。
    • ??!!!那解决了它。我已经看到这会干扰其他事情,但是为什么 BOM 会在这里产生影响?
    • 因为编译器使用正则表达式来搜索这些语句,而 UTF-8 BOM 会干扰。
    • 编译器现在已被修补以忽略 UTF8 BOM 字符。更改应该会在 2015 年 10 月及之后的版本中出现。
    猜你喜欢
    • 2011-02-07
    • 2020-10-28
    • 2011-09-29
    • 2020-05-05
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多