Au cours de mes aventures de migration Octane, je suis tombé sur cette erreur :
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
Je me suis trompé sur la première partie de "générer un lien", mais le problème principal est dans le " @action decorator ". Une fois que j'ai résolu ce problème, l'erreur sur "l'itinéraire du livre de caisse" a disparu.
Je pense qu'il y a deux façons d'améliorer le DX :
1) Il semble que tout ce qui génère l'erreur "cashbook route" (je suppose qu'il s'agit d'un composant LinkTo
?) Une fois qu'il détecte _some_ exception, il suppose à tort que les models
n'ont pas été fournis.
2) Si la deuxième erreur se plaignant de @action
me donnait un indice sur le fichier incorrect, je trouverais la source du problème beaucoup plus rapidement.
Note de bas de page pour quiconque pourrait souffrir du même problème : il m'est arrivé d'avoir action
et task
(de ember-concurrency) définis dans un contrôleur avec les mêmes noms . Après avoir exécuté npx ember-native-class-codemod http://localhost:4200 ./app
codemod, leurs noms sont entrés en collision dans l'espace de noms au niveau de la classe.
Un peu de contexte ici, l'assertion en question a été ajoutée dans https://github.com/emberjs/ember.js/pull/14554. Ce correctif suppose que la seule raison de cette erreur est que vous n'avez pas fourni suffisamment de paramètres dynamiques (et la raison pour laquelle nous augmentons le message d'erreur est que vous devez connaître la route cible).
Je pense que la bonne solution ici serait de mettre à jour ce bloc catch
:
Soit:
assert
, sinon alors throw e
Oui, je viens d'avoir le même problème dans 3.18, merci d'avoir posté ceci, il a été facile de voir au-delà du bit de lien de génération le vrai problème de @action decorator dans mon cas étant le même nom qu'un autre.
Dans mon cas, il s'agissait de noms d'action en double