我正在尝试为PlayFramework 2.1编写一个SBT插件,该插件可以预编译位于app / assets / templates中的把手模板。我当然会在完成后分享这个插件。我发现这个howto http://eng.netwallet.com/2012/04/25/emberhandlebars-template-precompilation-with-play/有点过时了,但是将它改编为Play也没问题! 2.1。
然后我尝试编译一个简单的模板文件,但SBT失败并带有以下内容:
ember: processing template test
[error] /.../templates/test.handlebars: Compilation error[unexpected exception during Ember compilation (file=/.../templates/test.handlebars, options=List(), ember=ember-1.0.0-pre.4.js): org.mozilla.javascript.EvaluatorException: missing name after . operator (ember-1.0.0-pre.4.js#3309)]
[error] (MyProject/*:play-copy-assets) @6dap83075: Compilation error in /.../templates/test.handlebars:null
[error] (MyProject/compile:resources) @6dap83075: Compilation error in /.../templates/test.handlebars:null
第3309行的ember-1.0.0-pre.4.js有一个volatile关键字,显然是在Rhino中保留的。
我远非犀牛专家,这就是为什么我想知道是否有人知道如何解决这个问题?我现在不是在寻找5 *解决方案。任何解决方案(即使是使用自定义ember.js的快速和肮脏的黑客)都有合理的机会为大多数简单的把手模板工作都可以工作,我们担心一旦功能出现并且SBT插件出来就抛光它。
提前致谢!
答案 0 :(得分:0)
我为Grails编写了一个等效的插件。如果我从rhino 1.7R4切换到1.7R2,我会得到完全相同的错误。 你必须切换到org.mozilla:rhino:1.7R4。
如果您遇到其他问题,建议您查看我的源代码。你可以从这里开始:https://github.com/florent-blanvillain/grails-ember-templates-precompiler/blob/master/src/groovy/org/grails/plugin/ember/handlebars/Precompiler.groovy
干杯
答案 1 :(得分:0)
这是因为ember使用了为rhino保留的关键字volatile,因为它符合JavaScript EC3。将rhino设置为使用EC5无效
请参阅https://github.com/emberjs/ember.js/issues/1202
这在ember-1.0.rc1中更糟糕,因为他们正在使用其他保留关键字。 解决方案是使用重命名的
关键字来执行自定义的ember.js文件答案 2 :(得分:0)
我在play 2.1中进行ember预编译的插件正在运行。它支持ember-1.0.0-pre.2,ember-1.0.0-rc.1和ember-1.0.0-rc.3,并解决与rhino相关的问题。