2

我正在尝试启动 Mozart 应用程序,但没有呈现任何内容,并且出现错误...

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

没有任何明显相关的变化 - 即。没有更改模板等,因此很难看出有什么问题。尝试了 npm install 并重新运行无济于事。有人遇到这个问题吗?

4

1 回答 1

4

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

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

您需要更新页面上使用的 Handlebars 版本,或者将用于模板预编译的 Handlebars 版本回退到package.json.

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

于 2013-09-17T01:26:38.587 回答