Ember.js: Erreur trompeuse sur la migration 3.15

Créé le 27 déc. 2019  ·  3Commentaires  ·  Source: emberjs/ember.js

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

Screenshot 2019-12-27 at 22 31 47

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.

Bug

Tous les 3 commentaires

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 :

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

Soit:

  1. Supprimez le bit sur les segments dynamiques invalides (afin que le message mentionne simplement quelque chose comme "Une erreur s'est produite lors de la génération d'un lien
    pour la route "cashbook", ${e.message}"
  2. Vérifiez si l'erreur qui est réellement renvoyée est celle attendue, si c'est le cas, faites le 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

Cette page vous a été utile?
0 / 5 - 0 notes