【问题标题】:Ember.js: Cannot read property 'isHelperInstance' of undefinedEmber.js:无法读取未定义的属性“isHelperInstance”
【发布时间】:2016-05-03 00:43:43
【问题描述】:

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

Uncaught TypeError: Cannot read property 'isHelperInstance' of undefined

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

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

我该如何解决这个问题?

【问题讨论】:

  • 节省了我的时间!谢谢!

标签: ember.js ember-cli ember-cli-rails


【解决方案1】:

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

奇怪的是,这并没有对开发环境造成任何问题,即使在使用完全相同的数据运行时也是如此。

【讨论】:

  • 有趣...我们刚开始在我们的一个暂存环境中看到这个问题。我已将 Ember/Rails 应用程序回滚到我们知道在假期前工作的版本,但错误仍然存​​在。在开发或 ember 测试期间没有错误。几个助手,数百个组件。很奇怪。
  • 有趣...我清除了所有 node_modules,重新构建,现在我在开发中遇到问题。我在文件夹中有一个助手:formatters/date.js。我们在模板中将其称为 {{formatters.date ...}}。我会尝试使用 kabob-case 看看是否能解决我的问题。
  • @Dan 我认为你应该使用formatters/date,因为它在一个文件夹中。以前没见过,但是看看这个讨论它的问题:github.com/wycats/handlebars.js/issues/912(更新:刚刚意识到你修复了这个并发布了一个答案,所以忽略)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    Ember-2.6.3

    为了让我的开发环境表现出这种行为,我必须清除我的node_modules/ 和重新npm-install 的所有内容。我还清除了我的bower_components 并重新bower installed 他们。不确定是什么造成了差异。

    我想我同意@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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 2020-10-30
      • 2019-10-09
      • 1970-01-01
      相关资源
      最近更新 更多