我如何解决类型错误this.merge不是试图运行莫扎特应用程序的函数?

时间:2013-09-17 01:11:19

标签: handlebars.js mozart-mvc

我正在尝试启动一个Mozart应用,但没有渲染,我收到了错误......

TypeError: this.merge is not a function 
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};

没有任何明显相关的变化 - 即。没有改变模板等所以很难看出什么是错的。尝试了npm安装并重新运行无济于事。有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:4)

听起来用于预编译模板的Handlebars版本与页面上实际运行的版本不同。

具体来说,this.merge已添加到Handlebars 1.0.0 final中,因此如果您的页面仍然运行早期版本(如1.0.0rc4),则该方法将不存在且事情将会中断。

您需要更新页面上使用的Handlebars版本,或者删除package.json中用于模板预编译的Handlebars版本。

[编辑:] 由于NPM安装下游依赖项的方式,您有时也会遇到麻烦。例如,您可以在"handlebars": "1.0.11"中指定package.json,但如果另一个包依赖于Handlebars并使用不同的版本,那么对于哪个版本的Handlebars来说可能会有点乐透。在调用require()时加载。您可以通过运行npm install --production来解决此问题,以确保跳过重复的依赖项(无论版本如何),但底线可能是“更新到最新版本并保持一致”。