在我的 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
我对“生成链接”的第一部分感到困惑,但主要问题出在“ @action装饰器”中。 一旦我解决了这个问题,“cashbook route”上的错误就消失了。
我认为有两种方法可以改进 DX:
1)看起来无论产生“现金簿路线”错误(我假设一个LinkTo
组件?)一旦它捕获 _some_ 异常,它错误地假设没有提供models
。
2) 如果抱怨@action
的第二个错误会给我一个关于文件不正确的提示,我会更快地找到问题的根源。
对于可能遇到相同问题的人的脚注:我碰巧在一个具有相同名称的控制器中定义了action
和task
(来自 ember-concurrency)。 运行npx ember-native-class-codemod http://localhost:4200 ./app
codemod 后,它们的名称在类级命名空间中发生冲突。
这里有一些背景知识,有问题的断言是在https://github.com/emberjs/ember.js/pull/14554中添加的
我认为正确的解决方法是更新这个catch
块:
要么:
assert
,如果不是,则throw e
是的,刚刚在 3.18 中遇到了同样的问题,感谢您发布此问题,可以很容易地看到通过生成链接位到@action装饰器的真正问题,在我的情况下与另一个同名。
就我而言,它是重复的动作名称