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デコレータ」にあります。 これを解決すると、「キャッシュブックルート」のエラーはなくなりました。
DXを改善する方法は2つあると思います。
1)「キャッシュブックルート」エラー( LinkTo
コンポーネントを想定していますか?)を生成するものは、_some_例外をキャッチすると、 models
が提供されていないと誤って想定しているようです。
2) @action
について文句を言う2番目のエラーが、ファイルが正しくないことについてのヒントを私に与える場合、問題の原因をはるかに迅速に見つけることができます。
同じ問題に苦しむ可能性のある人への注意:たまたま、同じ名前の1つのコントローラーで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デコレータの実際の問題へのリンク生成ビットを過ぎて簡単に確認できました。
私の場合、それは重複したアクション名でした