此错误也可能发生在旧(pre-Octane)版本的Ember中,如果您的组件在所有正确的位置,但您的组件没有在其名称中有一个破折号。As per the docs,组件被要求在其名称中至少有一个破折号: 组件的名称中必须至少有一个破折号。所以blog-post是一个可以接受的名称,audio-player-controls也是,但post不是。这样可以防止与当前或未来的HTML元素名称冲突,使Ember组件符合W3C Custom Elements规范,并确保Ember自动检测组件。 如果你试图创建一个名称中没有破折号的组件,Ember将找不到它,并会给予你这个错误。 在Ember的最新版本中,这个要求似乎已经被取消了,在这些版本中,组件以大写字母开头,以区别于原生HTML元素。
4条答案
按热度按时间x6492ojm1#
原因
如果没有组件或在您的项目或依赖的插件中找不到具有给定名称的帮助程序,Ember会抛出此错误。
如何解决
您应该检查您所编写的组件或帮助器的名称(可能的错误是拼写错误或组件的目录结构编写不正确)。
此twiddle显示了错误地将组件my-component称为
{{my-component2 x=x}}
而不是{{my-component x=x}}
时出现此错误消息的示例。jc3wubiy2#
此错误也可能发生在旧(pre-Octane)版本的Ember中,如果您的组件在所有正确的位置,但您的组件没有在其名称中有一个破折号。As per the docs,组件被要求在其名称中至少有一个破折号:
组件的名称中必须至少有一个破折号。所以blog-post是一个可以接受的名称,audio-player-controls也是,但post不是。这样可以防止与当前或未来的HTML元素名称冲突,使Ember组件符合W3C Custom Elements规范,并确保Ember自动检测组件。
如果你试图创建一个名称中没有破折号的组件,Ember将找不到它,并会给予你这个错误。
在Ember的最新版本中,这个要求似乎已经被取消了,在这些版本中,组件以大写字母开头,以区别于原生HTML元素。
niwlg2el3#
从documentation:
帮助程序允许您在模板中添加Ember自带的功能之外的其他功能。帮助程序在将模型和组件中的原始值转换为更适合用户的格式时非常有用。
看起来您正在使用一个未定义的帮助器。所以请查看(或者提供)更多的日志输出。您可能在一个(或多个)
.hbs
-文件中使用了一个未定义的帮助器。bfhwhh0e4#
组件和文件名必须相同。这个解决方案对我很有效。