我是Closure Tools的新手。在这种情况下,我有一个这样的项目结构:
使用calcdeps.py
来组合和编译我的项目,我得到了这个例外:
异常:重复提供(ClosureSample)(D:\ Tes compress \ CSS \ Stack \ sample2.js,sample2.js)
我使用以下命令调用calcdeps.py
:
python calcdeps.py -i sample.js -p“D:\ Tes compress”-p sample2.js -o compiled -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
答案 0 :(得分:2)
确保命名空间ClosureSample
仅在所有JavaScript源文件中对goog.provide()
的一次调用提供: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
,因为路径-p "D:\Tes compress
已包含此文件。
注意:不推荐使用
calcdeps.py
脚本。有关closurebuilder.py,
新推荐的依赖关系解析脚本的信息,请参阅使用ClosureBuilder。