Ember.js: 无法读取未定义的 属性 'isHelperInstance'

Ember.js: Cannot read property 'isHelperInstance' of undefined

我是第一次将我的应用程序部署到暂存环境,但我 运行 遇到错误...我的其中一条路线无法呈现其模板。我在控制台中看到此错误:

Uncaught TypeError: Cannot read property 'isHelperInstance' of undefined

我在开发中没有看到这个错误。

我正在使用 ember-cli-rails 通过 Heroku 为应用程序提供服务。

我该如何解决这个问题?

此错误的原因是引用了不存在的模板中的组件。我在开发中没有看到错误的原因是因为我在开发环境中没有与暂存中相同的数据。所以我从来没有看到我的模板中会导致错误的部分。

实际上,由于不正确地引用助手,我遇到了这个错误。我的助手名为 concatTwo(),但在车把中,您必须使用 kabob-case 引用它,即 concat-two。我们有一些引用 concatTwo 的 Handlebars,它破坏了那些页面并显示了这个错误。毫不奇怪,重构它以使用 kabob 案例版本修复了错误。

奇怪的是,这并没有对开发环境造成任何问题,即使 运行 它具有完全相同的数据。

Ember-2.6.3

为了让我的开发环境表现出这种行为,我必须清除我的 node_modules/ 并重新 npm-install 一切。我还清除了我的 bower_components 并重新 bower install 编辑了它们。不确定是哪个造成了差异。

我想我同意@vkoves 关于你的助手的烤肉盒。但除此之外,我认为您在引用帮助程序或组件时必须警惕使用点符号。

我们将一些格式助手嵌套在名为 formatters 的文件夹中。从我们的 Ember 应用程序的角度来看,它们看起来像这样:app/helpers/formatters/date

我们之前在整个应用程序中引用这个助手作为:{{formatters.date ...}}(formatters.date ...)

?在 Node/NPM 生态系统最近发生一些变化之后?,看来我们现在必须使用斜杠符号而不是点符号来引用我们的嵌套助手:{{formatters/date ...}}(formatters/date ...)

旁注(点符号与斜杠符号)

我们还刚刚发现 Ember-2.10 删除了引用组件的点符号……它显然不在发行说明中。我们必须在我们的应用程序中的任何地方修复它 (https://github.com/emberjs/ember.js/issues/14659)。