Ember.js: 3.15 迁移的误导性错误

创建于 2019-12-27  ·  3评论  ·  资料来源: emberjs/ember.js

在我的 Octane 迁移冒险中,我偶然发现了这个错误:

index.js:172 Uncaught Error: Assertion Failed: You attempted to generate a link 
for the "cashbook" route, but did not pass the models required for generating 
its dynamic segments. Assertion Failed: The <strong i="6">@action</strong> decorator must be 
applied to methods when used in native classes

Screenshot 2019-12-27 at 22 31 47

我对“生成链接”的第一部分感到困惑,但主要问题出在“ @action装饰器”中。 一旦我解决了这个问题,“cashbook route”上的错误就消失了。

我认为有两种方法可以改进 DX:
1)看起来无论产生“现金簿路线”错误(我假设一个LinkTo组件?)一旦它捕获 _some_ 异常,它错误地假设没有提供models
2) 如果抱怨@action的第二个错误会给我一个关于文件不正确的提示,我会更快地找到问题的根源。


对于可能遇到相同问题的人的脚注:我碰巧在一个具有相同名称的控制器中定义了actiontask (来自 ember-concurrency)。 运行npx ember-native-class-codemod http://localhost:4200 ./app codemod 后,它们的名称在类级命名空间中发生冲突。

所有3条评论

这里有一些背景知识,有问题的断言是在https://github.com/emberjs/ember.js/pull/14554中添加的

我认为正确的解决方法是更新这个catch块:

https://github.com/emberjs/ember.js/blob/d1ad76a2b22ce470639df3dfc6efb6864a70f588/packages/%40ember/-internals/glimmer/lib/components/link-to.ts#L770 -L777

要么:

  1. 删除有关无效动态段的部分(以便消息仅提及“生成链接时发生错误”之类的内容
    对于“现金簿”路线,${e.message}”
  2. 检查实际抛出的错误是否是预期的错误,如果是,则执行assert ,如果不是,则throw e

是的,刚刚在 3.18 中遇到了同样的问题,感谢您发布此问题,可以很容易地看到通过生成链接位到@action装饰器的真正问题,在我的情况下与另一个同名。

就我而言,它是重复的动作名称

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Yelinz picture Yelinz  ·  47评论

rlivsey picture rlivsey  ·  34评论

alexander-alvarez picture alexander-alvarez  ·  30评论

robharper picture robharper  ·  75评论

skoryky picture skoryky  ·  50评论