我正在尝试启动 Mozart 应用程序,但没有呈现任何内容,并且出现错误...
TypeError: this.merge is not a function
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
没有任何明显相关的变化 - 即。没有更改模板等,因此很难看出有什么问题。尝试了 npm install 并重新运行无济于事。有人遇到这个问题吗?
我正在尝试启动 Mozart 应用程序,但没有呈现任何内容,并且出现错误...
TypeError: this.merge is not a function
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
没有任何明显相关的变化 - 即。没有更改模板等,因此很难看出有什么问题。尝试了 npm install 并重新运行无济于事。有人遇到这个问题吗?
听起来用于预编译模板的 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
以确保跳过重复的依赖项(无论版本如何)来解决此问题,但底线可能是“更新到最新版本并保持一致”。