0

最新の plovr をチェックアウトし、bower を使用してプロジェクトにクロージャーを追加しました。advanced_compilation でclosure-compiler.jarを使用してコードをコンパイルすると、エラーや警告なしで動作しますが、plovrを使用すると次のエラーが発生します:

/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/",

これを解決する方法はありますか?

4

1 に答える 1

2

これは、更新されたライブラリが古いコンパイラ リリースと共に使用された場合に必ず発生する不一致です (Plovr はコンパイラ リリースよりも遅れることが知られています)。これらの特定の警告は.base、Plovr にバンドルされているコンパイラ リリースでサポートされていないことに関するものです。は、継承を表現する際に ES5 strict に準拠するため.baseの代替goog.baseおよびプロパティとして導入されました (no poking )。superClass_arguments.callee

以下にいくつかのオプションを示します。

  • Plovr に同梱されているクロージャ ライブラリを使用する

  • Plovrのソースを取得します。クロージャーコンパイラーを置き換えてビルドしant buildます(個人的には最近これを試していません)

  • Mediumチームは独自のPlovr forkを維持していますが、これは最近の Closure Compiler リリースとより一致しています。あなたはノード環境にいるので、NPMで試すことができます: npm install plovr --save-dev(私はこのフォークを更新されたバニラ ライブラリ チェックアウトで個人的に使用します)

于 2014-05-25T14:43:18.613 に答える