Ember 1.10 - 升级错误 - 模板必须是一个函数。你的意思是调用Ember.Handlebars.compile(" ...")或者指定templateName?

时间:2015-03-17 12:13:32

标签: javascript ember.js frontend ember.js-view

我正在将Ember 1.8应用升级到Ember 1.10。我们正在使用bower,我的版本和依赖项如下:

"ember": "~1.10.0",
"ember-data": "1.0.0-beta.14",
"ember-resolver": "~0.1.11",
"ember-validations-nocli": "~1.4.2"

Ember资产由Rails应用程序提供,我的application.js看起来像这样:

//= require jquery
//= require jquery-ui/sortable
//= require bootstrap
//= require selectize/dist/js/standalone/selectize
//= require filesize/lib/filesize
//= require moment/moment
//= require ember-template-compiler
//= require ember
//= require ember-data
//= require ember-validations-nocli/dist/ember-validations.js

现在,当我转到我的Ember应用程序的根路径时,我收到以下错误:

Error: Assertion Failed: template must be a function. Did you mean to call Ember.Handlebars.compile("...") or specify templateName instead?
at new Error (native)
at Error.EmberError (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:41133:23)
at Object.Ember.assert (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:32532:15)
at CoreView.extend.render (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:73318:19)
at EmberRenderer_createElement [as createElement] (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:68963:16)
at EmberRenderer.Renderer_renderTree [as renderTree] (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:37456:24)
at EmberRenderer.scheduledRenderTree (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:37533:16)
at Queue.invokeWithOnError (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:29455:20)
at Object.Queue.flush (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:29511:13)
at Object.DeferredActionQueues.flush (http://localhost:7000/assets/admin-35a600b33b51fec0abd608728144b875.js:29316:19)

问题是,堆栈跟踪不能说明哪个模板或错误发生在哪个文件中。知道我怎么能找到这个问题的根源吗?堆栈跟踪根本没有帮助,除了说我的模板不正确。我没有使用grunt编译任何东西,我们也没有使用Ember-CLI。

任何帮助或建议?谢谢!

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我的ember-template-compiler版本是1.9.0。

我找到了一个独立的编译器,对我有用。 EM-HBS-预编译器 https://www.npmjs.com/package/em-hbs-precompiler

这不是我想要的方式,但我希望有人会用咕噜声找出更好的解决方案。

答案 1 :(得分:0)

我去了 http://emberjs.com/blog/2015/02/05/compiling-templates-in-1-10-0.htmlhttps://github.com/dgeb/grunt-ember-templates/pull/77 寻求帮助,但我遇到的问题是我使用的是车把3.0而不是2.0。

options:{ 
    templateCompilerPath: 'ember-template-compiler.js',
     handlebarsPath: 'handlebars.js',
}

for handlebarsPath确保您使用的是把手2.0。