谷歌闭包编译器 - 不是内联goog lib函数调用?

时间:2016-08-11 14:37:03

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

几年前我使用闭包框架和编译器编写了一个JavaScrip应用程序。它使用goog.require,goog.provides和goog.inherits很多,并且使用旧的python脚本正常工作来构建它。

我希望它再次运行,所以我更新了库和编译器并使用了我的旧make脚本。但是得到这个。

  

Closure Compiler现在可以理解并命令Closure   依赖关系并且优先使用此脚本执行   JavaScript编译。请迁移您的代码库。看到:   https://github.com/google/closure-compiler/wiki/Managing-Dependencies

我阅读了提供的链接,没有看到任何错误。所以我用这个替换了脚本。

java -jar C:/closure/closure-compiler-v20160713.jar --output_manifest _manifest.txt  
--compilation_level ADVANCED_OPTIMIZATIONS --js M*.js 
--js_output_file _M_min.js

它编译得很好,但是在运行时我会收到诸如......之类的错误。

_M_min.js?v=4:23 Uncaught ReferenceError: goog is not defined

_M_min.js?v=4:54 Uncaught TypeError: Cannot read property 'extend' of undefined

我认为编译器展开了所有这些并且不需要在运行时包含goog库?

如果我确实将库包含在" js / goog / base.js"我得到goog.yb不是一个功能,等等。但我真的不认为我需要这样做。

我做错了什么。

1 个答案:

答案 0 :(得分:1)

我认为存在多个问题:

  1. 您必须在编译中包含闭包库作为源。添加goog.require就可以了。
  2. 您需要使用dependency management flags。如果您在所有文件中使用goog.providestrict,则需要CAST ((julianday(clockOUT) - julianday(clockIN)) * 24 AS REAL) AS HoursWorked模式。