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 会落后于编译器版本)。这些特殊警告是关于.basePlovr 捆绑的编译器版本不支持的。.base被引入作为表示继承时遵守 ES5 strict的替代方法goog.base和属性(无戳)。superClass_arguments.callee

这里有几个选项:

  • 使用与 Plovr 捆绑的闭包库

  • 获取Plovr的来源;替换closure-compiler并构建ant build(我个人最近没有尝试过)

  • Medium团队维护自己的Plovr分支,这更符合最近的 Closure Compiler 版本。由于您处于节点环境中,因此您可以尝试使用NPM:(npm install plovr --save-dev我个人使用此 fork 并更新了 vanilla Library 结帐)

于 2014-05-25T14:43:18.613 回答