Ember.js: Die Fehlerroute kann in 2.10 nicht festgelegt werden

Erstellt am 29. Nov. 2016  ·  29Kommentare  ·  Quelle: emberjs/ember.js

Ember.js legt standardmäßig die 'Fehler'-Route fest, aber der Routenerkenner erlaubt keine doppelten Routen mehr:
https://github.com/tildeio/route-recognizer/blame/5d54688f04273d3a921470b903a36266dddcdaf2/dist/route-recognizer.js#L525 -L531

Wenn Sie dies tun, erhalten Sie eine leere Seite mit einem Fehler in Ihrer Konsole:

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

Hier werden Standard-Fehlerrouten festgelegt:
https://github.com/emberjs/ember.js/blob/10857fd98008bb47bd63bfe3d21b0fc224a197a5/packages/ember-routing/lib/system/dsl.js#L49 -L50

Sie können es testen, indem Sie versuchen, die Route error mit ember g route error .
Diese Funktionalität hat in 2.9 gut funktioniert.

Bug Ember 2.10 Has Reproduction

Hilfreichster Kommentar

In 2.11.1 behoben

Alle 29 Kommentare

@ Diamondo25 Kannst du bitte in einem Twiddle reproduzieren?

Ich sehe das auch und ich kann mich nicht erinnern, es in der letzten Beta von gestern gesehen zu haben

Klingt plausibel. Dies ist auf eine route-recognizer Änderung zurückzuführen, die ich vorgenommen habe. Die Standarderstellung muss gesperrt werden, wenn der Benutzer bereits eine erstellt hat. (Ich weiß, wie man es repariert, werde es schaffen.)

@ Nathanhammond danke für die schnelle @rwjblue Ich habe als "Bug" bezeichnet. Vielleicht kann dieses Problem mit einer kommenden Version 2.10.1 behoben werden.

Das ist nicht das Problem, @pixelhandler! Dort wurde der Fehler eingeführt. 😜Dies muss nach der Behebung eine Punktfreigabe haben, aber ich muss noch einige andere Dinge ansprechen, bevor ich wieder mit den Routersachen beginnen kann. (Ich habe ungefähr 5 offene Fragen zu beantworten.)

Gibt es einen Status für diesen Kerl?

Wir haben dieses Problem beim Upgrade der Bustle-App auf 2.10 festgestellt und müssen entweder unsere Root-Route error umgestalten, um einen anderen Namen zu erhalten, oder das Upgrade auf 2.10 unterbrechen.

Wir sind auch am Status dieses Fehlers interessiert. Wir halten uns vorerst vom Upgrade auf 2.10 zurück.

Ich hatte gehofft, ich könnte das umgehen, indem ich die Route error nicht explizit registriere und meine Fehlervorlage, Route usw. an Ort und Stelle belasse. Ich habe es versucht und gefunden:

  • Bei einem fehlgeschlagenen Routen-Hook sprudelt der Router zur Fehlerroute und meine benutzerdefinierte Vorlage wird angezeigt.
  • Bei einem absichtlichen Übergang zum Fehler wechselt der Router nicht zu meiner Vorlage. Interessanterweise wird nicht dieselbe Fehlermeldung protokolliert, die Sie erhalten, wenn keine Route vorhanden ist.

Ich denke, ich könnte die Vorlage, die Route, den Controller usw. an Ort und Stelle lassen und eine benutzerdefinierte Fehlerroute registrieren, die für meine explizit behandelten Fehlerfälle auf dieselbe Vorlage verweist. Vielleicht würde dies sowohl die abgefangenen als auch die nicht abgefangenen Fehler mit meiner benutzerdefinierten Vorlage behandeln.

@ Nathanhammond - Hast du irgendwelche Gedanken zu den oben genannten? Lohnt sich der Hackery oder besser, nur auf eine offizielle Lösung zu warten?

Keine Ursache :(

Der obige Vorschlag würde weiterhin die Zuordnung von error erfordern und diesen Fehler auslösen.

Ich kann einfach die benutzerdefinierte Route für meine behandelten Fehler erstellen und dieselbe Fehlerkomponente in der Vorlage error .

Scheint der einzige andere Ansatz zu sein, der noch nicht behoben ist.

CC: @ Nathanhammond

Ich habe festgestellt, dass dies in ember v2.12.0-beta.1 behoben ist. Gibt es eine Möglichkeit, dieses Update auf eine Version 2.11 zurückportieren zu lassen? Seit der Beta-Version 2.12 gibt es eine ganze Reihe neuer Probleme.

Seit der Beta-Version 2.12 gibt es eine ganze Reihe neuer Probleme.

Bitte melden Sie alle Probleme, die Sie mit dem Beta-Zyklus finden!

Gibt es eine Chance, dieses Update auf eine Version 2.11 zurückportieren zu lassen?

Ja, ich denke das ist eine gute Idee.

Es sieht so aus, als ob dies in v0.2.9 + mit 27c0f57 und 9b21d93 für die 0.3.x-Serie

@rwjblue würde dies auch nur auf 2.11 oder 2.10 gepatcht werden? Ich bin mir nicht sicher, wie ich entscheiden soll, welche Fehler in welcher Version gepatcht werden.

In 2.11.1 behoben

Wurde dies anders behoben als Beta.1? Ich habe gerade 2.11.1 ausprobiert und das gibt mir immer noch einen doppelten Routenfehler über "hotel.error", während die Beta dies nicht tut.

@Glennvd - Ja, es handelt sich um verschiedene Versionen des Routenerkenners (0.2.9 für 2.11 und 0.3 für 2.12). Es ist möglich, dass ich das irgendwie durcheinander gebracht habe. Können Sie den Fehler und die Stapelverfolgung, die Sie mit 2.11 erhalten, teilen? Auch ein Twiddle und / oder Demo Repo möglich? Ich bin froh, eine 2.11.2 veröffentlichen zu können, sobald wir herausgefunden haben, was ich falsch gemacht habe.

@rwjblue Ich habe hier ein Problem, muss nur auf die richtige https://ember-twiddle.com/e4b8412bf5629483f94276a001598571

Vollständiger Stacktrace (aus meiner eigenen App) unten.
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)
Der Fehler ist immer noch der gleiche Uncaught Error: You may not add a duplicate route named hotel.error .

@rwjblue läuft

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

kehrt zurück

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';

Ja, das Problem ist, dass [email protected] mit der dist-Ausgabe von

@rwjblue , sehr geschätzt, Sir.
Lass mich wissen, wenn du etwas brauchst!

OK, ich habe [email protected] mit der aktualisierten dist-Ausgabe freigegeben und dann im Release-Zweig (unter https://github.com/emberjs/ember.js/commit/6c7e6950f127aa31912b5729971703c0c9615655) gestoßen und in der Build-Ausgabe bestätigt (unter https://github.com/components/ember/commit/4a9c7361f4f546daf3ad342da6d196b5b4b6bf20).

Ich habe dann mit dem von @Glennvd oben geteilten release branch keine Zusicherung erfolgt (und die App startet).

Wenn jemand anderes mich hier überprüfen kann, kann ich 2.11.2 veröffentlichen ...

Darauf.

@rwjblue vergib meine Noobiness,
Ich versuche mein Projekt mit zu bauen

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

aber es scheitert weiter

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

Was mache ich falsch :)?

@gmaliar ember-source hat keine Build-Artefakte im Repository, daher müssen Sie das Bower-Tag verwenden oder Ember lokal klonen, erstellen und verknüpfen.

Danke @locks ,
@rwjblue Ich kann bestätigen, dass es funktioniert.

Dies kann geschlossen werden, es funktioniert ordnungsgemäß auf 2.11.2 .

Danke für die Bestätigung!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen