我目前正在更新使用Ember 1.8.1至1.9和Handlebars 2.0的Ember Starter套件构建的Ember应用程序。我试图成功更新而不必重构很多代码 - 我希望这是可能的。
目前,我在控制台中收到错误:“错误:未知模板对象:函数”。从我读到的是因为我使用的模板编译器只能理解Handlebars 1.3。我目前正在使用Gulp来编译我的模板。我已经从gulp-ember-templates转移到gulp-handlebars,这表明我可以使用特定的Handlebars版本编译我的模板。
这就是我的'模板'gulp任务的样子:
gulp.task('templates', function () {
gulp.src(paths.dev.templates + '**/*.hbs')
.pipe(handlebars({
handlebars: require('handlebars')
}))
.pipe(wrap('Handlebars.template(<%= contents %>)'))
.pipe(declare({
namespace: 'TM.TEMPLATES',
noRedeclare: true,
}))
.pipe(concat('templates.js'))
.pipe(gulp.dest('public/app'))
});
..而我的package.json有
"devDependencies": {
"handlebars": "^2.0.0"
}
我读过我可能需要更新运行时版本,但我不知道我能在哪里做到这一点所以我假设我从NPM安装了最新的ember-template-compiler并在我的gulpfile中引用它以下
//COMPILE ALL PULGIN FILES
gulp.task("all", function(){
return gulp.src([
paths.dev.vendor + "jquery/dist/jquery.js",
paths.dev.vendor + "handlebars/handlebars.js",
"/node_modules/ember-template-compiler/lib/main.js",
paths.dev.vendor + "ember/ember.js",
])
.pipe(concat("all.js"))
.pipe(gulp.dest("public/js/"));
});
......它会起作用。
不幸的是,我仍然得到'错误:未知的模板对象:函数'。我知道我可以尝试将应用程序迁移到Ember CLI,目前还没有容量。
感谢。