Während meiner Octane-Migrationsabenteuer bin ich auf diesen Fehler gestoßen:
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
Ich war beim ersten Teil von "Link generieren" verwirrt, aber das Hauptproblem liegt im " @action decorator". Nachdem ich dies gelöst hatte, war der Fehler bei "Cashbook Route" verschwunden.
Ich glaube, es gibt zwei Möglichkeiten, den DX zu verbessern:
1) Es sieht so aus, als ob das, was auch immer den Fehler "Cashbook Route" liefert (ich nehme an, eine LinkTo
Komponente?), sobald es eine _some_ Ausnahme abfängt, fälschlicherweise annimmt, dass die models
nicht bereitgestellt wurden.
2) Wenn der zweite Fehler, der sich über @action
beschwert, mir einen Hinweis auf die fehlerhafte Datei geben würde, würde ich die Ursache des Problems viel schneller finden.
Fußnote für alle, die unter dem gleichen Problem leiden: Ich habe zufällig action
und task
(von ember-concurrency) in einem Controller mit den gleichen Namen definiert . Nach der Ausführung des Codemods npx ember-native-class-codemod http://localhost:4200 ./app
kollidierten ihre Namen im Namespace auf Klassenebene.
Ein bisschen Hintergrund hier, die fragliche Behauptung wurde in https://github.com/emberjs/ember.js/pull/14554 hinzugefügt
Ich denke, die richtige Lösung wäre, diesen catch
Block zu aktualisieren:
Entweder:
assert
ist, führen Sie den throw e
Yup, hatte gerade das gleiche Problem in 3.18, danke für das Posten, machte es einfach, über das Generate-Link-Bit hinaus zum eigentlichen Problem von @action decorator in meinem Fall zu sehen, der denselben Namen wie ein anderer hat.
In meinem Fall waren es doppelte Aktionsnamen