Ember.js: Irreführender Fehler bei der 3.15-Migration

Erstellt am 27. Dez. 2019  ·  3Kommentare  ·  Quelle: emberjs/ember.js

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

Screenshot 2019-12-27 at 22 31 47

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.

Bug

Alle 3 Kommentare

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:

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

Entweder:

  1. Entfernen Sie das Bit über ungültige dynamische Segmente (so dass die Nachricht nur etwas wie "Beim Generieren eines Links ist ein Fehler aufgetreten" erwähnt)
    für die "Cashbook"-Route, ${e.message}"
  2. Überprüfen Sie, ob der tatsächlich ausgegebene Fehler der erwartete ist, wenn dies der 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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen