2016-08-11 58 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模式。