2014-05-25 30 views
0

我檢出了最新的plovr,並使用bower將閉包添加到了我的項目中。在編譯時與advanced_compilation作品閉合compiler.jar代碼沒有任何錯誤或警告,使用plovr提供了以下錯誤:使用plovr關閉新關閉<constructor> .base()

/closure/goog/ui/buttonrenderer.js:107: WARNING - goog.ui.ButtonRenderer.base is never defined 
var element = goog.ui.ButtonRenderer.base(this, 'createDom', button); 
^ 
/closure/goog/ui/menu.js:425: WARNING - goog.ui.Menu.base is never defined 
var handled = goog.ui.Menu.base(this, 'handleKeyEventInternal', e); 
^ 
/closure/goog/ui/menu.js:447: WARNING - goog.ui.Menu.base is never defined 
goog.ui.Menu.base(this, 'setHighlightedIndex', index); 
^ 
/closure/goog/ui/select.js:61: WARNING - goog.ui.Select.base is never defined 
goog.ui.Select.base(this, 'constructor', 
^ 
/closure/goog/ui/select.js:142: WARNING - goog.ui.Select.base is never defined 
goog.ui.Select.base(this, 'handleMenuAction', e); 
^ 

我已封庫config.js

"closure-library": "bower_components/closure-library/closure/goog/", 

有沒有辦法解決這個問題?

回答

2

這是一個不匹配,當一個更新的庫與一個陳舊的編譯器發行版一起使用時(Plovr被稱爲獲取編譯器發行版),它將會發生不匹配。與Plovr捆綁在一起的編譯器版本不支持這些特定的警告大約.base.base是作爲goog.basesuperClass_屬性的替代方法引入的,以便在表達繼承時嚴格遵守ES5(不戳制arguments.callee)。

這裏有幾個選項:

  • 使用封庫與Plovr

  • Plovr's source捆綁;替換封閉編譯器並編譯爲ant build(我個人最近沒有嘗試過)

  • Medium團隊維護自己的Plovr fork,這更符合最近的Closure Compiler版本。由於您處於節點環境中,因此您可以使用NPMnpm install plovr --save-dev(我親自使用此叉與更新的vanilla Library結帳)