1

我是Closure Tools的新手。在这种情况下,我有一个这样的项目结构:

关闭项目目录截图

用于calcdeps.py组合和编译我的项目,我得到了这个异常:

例外:在 (D:\Tes compress\CSS\Stack\sample2.js, sample2.js) 中重复提供 (ClosureSample)

我使用以下命令来调用calcdeps.py

python calcdeps.py -i sample.js -p "D:\Tes compress" -p sample2.js -o 已编译 -c compiler.jar -f --js=sample_renaming_map.js -f --compilation_level=ADVANCED_OPTIMIZATIONS -f - -warning_level=VERBOSE -f --externs=jquery-1.7.js -f --js_output_file=sample_compiled.js

4

1 回答 1

2

确保命名空间ClosureSample仅由对goog.provide()所有 JavaScript 源文件的一次调用提供:sample.js、sample2.js 等。如果多个文件包含该行goog.provide('ClosureSample'),您将收到重复的提供异常。

Closure 的base.js定义中包含以下注释goog.provide()

// Ensure that the same namespace isn't provided twice. This is intended
// to teach new developers that 'goog.provide' is effectively a variable
// declaration. And when JSCompiler transforms goog.provide into a real
// variable declaration, the compiled JS should work the same as the raw
// JS--even when the raw JS uses goog.provide incorrectly.

在命令行调用中,您可以删除-p sample2.js该文件,因为该文件已包含在 path-p "D:\Tes compress中。

注意:calcdeps.py脚本已弃用。有关新推荐的依赖解析脚本的信息,请参阅使用ClosureBuilder 。closurebuilder.py,

于 2012-10-11T18:02:54.477 回答