我在一个较大的 Rails 应用程序中的主干.js 应用程序中有仪表板。在登台和生产(在heroku上)仪表板工作正常。
但是,在我的本地 Pow 开发环境中,当我尝试查看特定仪表板时,我在浏览器控制台中收到以下错误:
Uncaught TypeError: Object #<Object> has no method 'merge'
在跟踪了一下之后,这就是我想出的。错误消息中引用的合并方法来自呈现的 /assets/templates/dashboard/details.js 文件。这是浏览器在第 5 行开头调用错误的代码:helpers = this.merge...:
(function() {
this.HandlebarsTemplates || (this.HandlebarsTemplates = {});
this.HandlebarsTemplates["dashboard/details"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
this.compilerInfo = [4,'>= 1.0.0'];
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
buffer += "<p>\n <b>Name:</b>\n <span class='editable' data-attribute-name='name'>";
if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
buffer += escapeExpression(stack1)
+ "</span>\n</p>\n<p>\n <b>Description:</b>\n <span class='editable' data-attribute-name='description'>";
if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
buffer += escapeExpression(stack1)
+ "</span>\n</p>\n<p>\n <button class='add_module'>Add module</button>\n</p>\n";
return buffer;
});
return this.HandlebarsTemplates["dashboard/details"];
}).call(this);
我认为这是 Rails 预编译或资产管道设置问题,因为它在暂存和生产中运行良好,但在本地开发中失败。
必须将任何更改推送到 heroku 来测试它们,这很糟糕。任何解决此问题的建议表示赞赏。