2016-08-11 57 views
1

几年前,我使用闭包框架和编译器编写了一个JavaScrip应用程序。它使用goog.require,goog.provides和goog.inherits很多,并且使用旧的python脚本很好地工作以构建它。谷歌封闭编译器 - 不内联goog lib函数调用?

我想再次工作,所以我更新了库和编译器,并使用我的旧make脚本。但得到这个。

关闭编译器现在本身的理解和订单关闭 的依赖,并在prefererred使用这个脚本执行 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

我认为有多个问题:

  1. 您必须在您编译源封库。添加--js path/to/closure/**.js将做到这一点。
  2. 您需要使用dependency management flags。如果在所有文件中使用goog.requiregoog.provide,则需要strict模式。