【问题标题】:google closure compiler - not inlining goog lib function calls?谷歌闭包编译器 - 不内联 goog lib 函数调用?
【发布时间】:2016-08-11 14:37:02
【问题描述】:

几年前我使用闭包框架和编译器编写了一个 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 不是函数等等。但我真的不认为我需要这样做。

我做错了什么。

【问题讨论】:

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


    【解决方案1】:

    我认为有多个问题:

    1. 您必须在编译中包含闭包库作为源代码。添加--js path/to/closure/**.js 即可。
    2. 您需要使用dependency management flags。如果您在所有文件中使用goog.requiregoog.provide,您将需要strict 模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多