Ember.js: Impossible de définir la route «erreur» sur 2.10

Créé le 29 nov. 2016  ·  29Commentaires  ·  Source: emberjs/ember.js

Ember.js définit la route `` erreur '' par défaut, mais route-Recognizer n'autorise plus les routes dupliquées:
https://github.com/tildeio/route-recognizer/blame/5d54688f04273d3a921470b903a36266dddcdaf2/dist/route-recognizer.js#L525 -L531

Cela vous donnera une page vierge avec une erreur dans votre console:

Uncaught Error: You may not add a duplicate route named `error`

Les itinéraires d'erreur par défaut sont définis ici:
https://github.com/emberjs/ember.js/blob/10857fd98008bb47bd63bfe3d21b0fc224a197a5/packages/ember-routing/lib/system/dsl.js#L49 -L50

Vous pouvez le tester en essayant de gérer error route en utilisant ember g route error .
Cette fonctionnalité fonctionnait bien dans la version 2.9.

Bug Ember 2.10 Has Reproduction

Commentaire le plus utile

Corrigé dans 2.11.1

Tous les 29 commentaires

@ diamondo25 Pouvez-vous reproduire dans un Twiddle s'il vous plaît?

Je vois cela aussi et je ne me souviens pas l'avoir vu dans la dernière version bêta d'hier

Semble légitime. C'est en vertu d'un changement route-recognizer j'ai effectué. Besoin de verrouiller la création par défaut si l'utilisateur en a déjà créé une. (Je sais comment réparer, j'y arriverai.)

@nathanhammond merci d'avoir réparé si rapidement! @rwjblue J'ai étiqueté comme "Bug" peut-être que ce problème pourra être résolu avec une prochaine version 2.10.1.

Ce n'est pas la solution, @pixelhandler! C'est là que le bogue a été introduit. 😜 Cela nécessite une version ponctuelle une fois corrigé, mais j'ai quelques autres choses à régler avant de pouvoir revenir pour faire les choses du routeur. (J'ai environ 5 problèmes ouverts à résoudre.)

Y a-t-il un statut sur ce gars?

Nous avons rencontré ce problème lors de la mise à niveau de l'application Bustle vers la version 2.10, et nous devrons soit refactoriser notre route racine error pour qu'elle porte un nom différent, soit suspendre la mise à niveau vers la version 2.10.

Nous sommes également intéressés par le statut de ce bug. Nous nous abstenons de passer à la version 2.10 pour le moment.

J'espérais pouvoir contourner ce problème en n'inscrivant pas explicitement la route error et en laissant mon modèle d'erreur, mon itinéraire, etc. en place. Je l'ai essayé et j'ai trouvé:

  • En cas d'échec d'un hook de route, le routeur remontera jusqu'à la route d'erreur et mon modèle personnalisé s'affiche.
  • Lors d'une transition délibérée vers l'erreur, le routeur ne passe pas à mon modèle. Fait intéressant cependant, il n'enregistre pas le même message d'erreur que celui que vous obtenez lorsqu'une route n'existe pas.

Je pense que je pourrais peut-être laisser le modèle, la route, le contrôleur, etc. en place et enregistrer une route d'erreur personnalisée pointant vers le même modèle pour mes cas d'erreur explicitement gérés. Peut-être que cela gérerait à la fois les erreurs capturées et non interceptées avec mon modèle personnalisé.

@nathanhammond - Avez-vous des idées sur ce qui précède? Vaut le piratage ou mieux d'attendre un correctif officiel?

Ça ne fait rien :(

La proposition ci-dessus nécessiterait toujours le mappage error et déclencherait ce bogue.

Je peux simplement faire la route personnalisée pour mes erreurs gérées et utiliser mon même composant d'erreur dans le modèle error .

Semble être la seule autre approche en attente d'un correctif.

CC: @nathanhammond

J'ai remarqué que cela est corrigé dans ember v2.12.0-beta.1, y a-t-il une chance d'obtenir ce correctif rétroporté vers une version 2.11? Depuis la version bêta 2.12 introduit tout un tas de nouveaux problèmes.

Depuis la version bêta 2.12 introduit tout un tas de nouveaux problèmes.

Veuillez signaler tout problème rencontré avec le cycle bêta!

Y a-t-il une chance de rétroporter ce correctif vers une version 2.11?

Oui, je pense que c'est une bonne idée.

Il semble que cela a été commenté dans la version 0.2.9 + avec 27c0f57 et 9b21d93 pour la série 0.3.x.

@rwjblue serait-il simplement corrigé à 2.11 ou 2.10 également? Je ne suis pas sûr du processus pour décider quels bogues seront corrigés dans quelle version.

Corrigé dans 2.11.1

Cela a-t-il été résolu d'une manière différente de la version beta.1? Je viens d'essayer 2.11.1 et cela me donne toujours une erreur de route en double à propos de "hotel.error" alors que la version bêta ne le fait pas.

@Glennvd - Oui, ce sont des versions différentes de route-Recognizer (0.2.9 pour 2.11 et 0.3 pour 2.12). Il est possible que j'aie gâché ça d'une manière ou d'une autre. Pouvez-vous partager l'erreur et la trace de pile que vous obtenez avec la version 2.11? Aussi, possible un repo twiddle et / ou démo? Je suis heureux de publier une version 2.11.2 une fois que nous aurons compris ce que j'ai mal fait.

@rwjblue J'ai un twiddle ici, il suffit de changer la bonne version de braise https://ember-twiddle.com/e4b8412bf5629483f94276a001598571

Stacktrace complet (à partir de ma propre application) ci-dessous.
add (ember.debug.js:55618) (anonymous) (ember.debug.js:57247) (anonymous) (ember.debug.js:55191) eachRoute (ember.debug.js:55179) eachRoute (ember.debug.js:55177) eachRoute (ember.debug.js:55177) map (ember.debug.js:55190) map (ember.debug.js:57244) _initRouterJs (ember.debug.js:27511) setupRouter (ember.debug.js:27606) startRouting (ember.debug.js:27592) startRouting (ember.debug.js:2887) didBecomeReady (ember.debug.js:3867) invoke (ember.debug.js:337) flush (ember.debug.js:405) flush (ember.debug.js:529) end (ember.debug.js:599) run (ember.debug.js:722) join (ember.debug.js:744) run.join (ember.debug.js:22286) (anonymous) (ember.debug.js:22349) mightThrow (jquery.js:3570) process (jquery.js:3638) nrWrapper ((index):97)
L'erreur est toujours la même Uncaught Error: You may not add a duplicate route named hotel.error .

@rwjblue en cours d'exécution

grep --recursive "RouteRecognizer.VERSION" node_modules/ember-source

Retour

node_modules/ember-source/dist/ember.debug.js:RouteRecognizer.VERSION = '0.2.8';
node_modules/ember-source/dist/ember.js:RouteRecognizer.VERSION = '0.2.8';
node_modules/ember-source/dist/ember.prod.js:RouteRecognizer.VERSION = '0.2.8';

Oui, le problème est que [email protected] a été publié avec la sortie dist de 0.2.8. J'y travaille...

@rwjblue , très apprécié monsieur.
Faîtes-moi savoir si vous avez besoin de quoi que ce soit!

OK, j'ai publié [email protected] avec la sortie dist mise à jour, puis je suis

J'ai ensuite confirmé avec le twiddle partagé par @Glennvd ci-dessus que lorsque vous utilisez la branche release , aucune assertion ne se produit (et l'application démarre).

Si quelqu'un d'autre peut me vérifier ici, je peux publier 2.11.2 ...

Dessus.

@rwjblue pardonne ma noblesse,
J'essaye de construire mon projet avec

devDependencies: {
// ...
"ember-source": "git://github.com/emberjs/ember.js.git#6c7e6950f127aa31912b5729971703c0c9615655"
// ...

mais ça échoue

$ ember build
⠋ Building
Cannot find module 'node_modules/ember-source/dist/ember-template-compiler.js'

Qu'est-ce que je fais mal :)?

@gmaliar ember-source n'a pas les artefacts de construction dans le référentiel, vous devez donc utiliser la balise bower, ou cloner, construire et lier ember localement.

Merci @locks ,
@rwjblue Je peux confirmer que cela fonctionne.

Cela peut être fermé, cela fonctionne correctement sur 2.11.2 .

Merci d'avoir confirmé!

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