使用calcdeps.py构建Closure项目时出现“异常:重复提供”

时间:2012-10-11 08:37:49

标签: google-closure-compiler google-closure google-closure-library

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

Closure project directory screenshot

使用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

1 个答案:

答案 0 :(得分:2)

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

Closure的base.jsgoog.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