Vue: Informationen zu Warnmeldungen verbessern

Erstellt am 2. Okt. 2016  ·  40Kommentare  ·  Quelle: vuejs/vue

Es sagt "Vue Warn: Handler für Ereignisklick ist nicht definiert"
Es ist irgendwo ein Fehler aufgetreten, der mit dem Ereignisklick zu tun hat. Ich habe Hunderte von Komponenten mit Klickereignissen. In welcher Komponente/Datei erhalte ich den Fehler?

erroe

improvement

Hilfreichster Kommentar

Ich verwende Vue 2. Es ist kein Fehler. Es ist eine Fehlermeldung, die nutzlos ist. Nun, Vue kann dies als Vorschlag nehmen, den Fehlermeldungsstil zu verbessern und spezifisch zu gestalten. Damit, wenn ein Entwickler einen Fehler macht, kann er diesen in kurzer Zeit beheben, indem er genau weiß, wo der Fehler liegt. Im Vergleich zu React JS zeigen sie den Komponentennamen zusammen mit der Zeilennummer und natürlich auch den Fehler.

Alles was ich wünsche, es gibt eine Fehlermeldung, um genau zu sein.

Alle 40 Kommentare

Dieses eingereichte Problem erfordert weitere Informationen. Verwenden Sie vue 2 oder vue 1.
Ist es ein Bug oder ein Vorschlag? Wenn Fehler, dann ein reproduzierbarer Link auf jsfiddle.
Wenn eine Ihrer Komponenten keine Handlerfunktion hat, kann dies kein Vue-Problem sein.

//Am besten

Ich verwende Vue 2. Es ist kein Fehler. Es ist eine Fehlermeldung, die nutzlos ist. Nun, Vue kann dies als Vorschlag nehmen, den Fehlermeldungsstil zu verbessern und spezifisch zu gestalten. Damit, wenn ein Entwickler einen Fehler macht, kann er diesen in kurzer Zeit beheben, indem er genau weiß, wo der Fehler liegt. Im Vergleich zu React JS zeigen sie den Komponentennamen zusammen mit der Zeilennummer und natürlich auch den Fehler.

Alles was ich wünsche, es gibt eine Fehlermeldung, um genau zu sein.

Es gibt viele Nachrichten in Vue, die nicht wirklich viel sagen. Vues Sicherheitschecks scheinen leider zu fehlen.

Ich denke, wenn vue seinen Warnungen etwas mehr Informationen hinzufügen kann -

Komponentenname
Komponententyp
oder
kann die Warnmeldung für die Entwicklungsumgebung konfigurierbar machen.

Wir versuchen, Komponenteninformationen bereitzustellen, wann immer wir können. Dies ist möglicherweise ein Versehen.

@just-nobody Bitte geben Sie konkrete Beispiele für fehlende Nachrichten an, damit wir uns verbessern können - nur beschweren bringt nichts.

Ich beschwerte mich nicht wirklich; Ich dachte, das war nur etwas, was die Leute bereits wussten. Ich bin in der Vergangenheit auf viele kleine Randfälle gestoßen, die eine seltsame, unauffällige Nachricht über das eigentliche Problem lieferten, aber stattdessen tief in der Quelle verwurzelt waren, und einige andere Probleme haben keinen Fehler ausgegeben und stattdessen ein seltsames Rendering verursacht Insekt. Einige waren leichter aufzuspüren als andere, also habe ich mir nicht die Mühe gemacht, sie zu melden, da ich dachte, dass ich nur dumm bin, aber speziell für einen habe ich tatsächlich eine Pull-Anfrage erstellt, weil ich so lange gebraucht habe, um herauszufinden, was los ist .

Ich kann mir vorstellen, dass viele von ihnen jetzt behoben sind, da 2.0.1 herauskommt, aber mein Fehler, dass ich stumm geblieben bin, denke ich. Eine Nachricht an die Leser: Wenn Sie denken, dass es sich um einen Fehler handelt, melden Sie ihn, auch wenn es am Ende kein Fehler ist.

@yyx990803 Selbst die

:) danke Evan

Hallo, mir ist vor kurzem aufgefallen, dass das Fehlen von Zeilennummern die Fehlersuche sehr schwierig macht, insbesondere wenn die Komponente groß ist. Ich habe eine Komponente mit ein paar Tausend Zeilen. Ich habe eine Warnung erhalten
"[Vue warn]: Fehler in der Renderfunktion: "TypeError: _vm.values[item.name] is undefined""

Es gibt einen Komponentennamen, aber keine Zeilennummer in meiner Firefox-Konsole. Für solche Fälle wäre es sehr nützlich, eine bestimmte Zeilennummer zu haben. Natürlich kann ich die Komponente in mehrere kleinere aufteilen oder einfach alle diese Zeilen mit der Editor-Suche durchsuchen, aber das ist nicht der Punkt.

Bitte erwägen Sie, in den nächsten Versionen Zeilennummern hinzuzufügen. Danke schön.

+1 Bitte Zeilennummern hinzufügen.

Ich habe die nächste Nachricht,

vue.js:577 [Vue warn]: Fehler beim Rendern: "TypeError: Cannot read property 'length' of undefined"
(gefunden in)

Ich weiß, warum es bei diesem Konstrukt "variable.length" fehlschlägt, wenn Variable == null. Das Problem ist, dass ich viele ".length" -Konstrukte habe, die Daten kommen von einem externen Dienst.

Das gleiche für mich @ameoba32
Ich habe "Eigenschaft 'Länge' von undefiniert kann nicht gelesen werden" und ich finde nicht, wo das Problem liegt. Es ist eine große Webapp, also ist es schwer.
Ich nehme an, dass ich eine Datei in Ursache gefunden habe, aber ich weiß nicht, wo genau der Fehler liegt.
Soll ich Zeile für Zeile löschen, um die unterbrochene Zeile zu finden? xD

Hier wie bei @ameoba32 . @yyx990803 Bitte tun Sie etwas. Danke!

Ich liebe Vue - sehr und arbeite seit zwei Jahren damit. Der Mangel an Spezifität bei einem RENDER-Fehler ist meine Nr. 1-Beschwerde/Behebungsanfrage. Dieser Fehler tritt entweder im Template oder im entsprechenden js-Code auf. Eine Zeilennummer wäre sehr hilfreich, oder sogar wenn das Problem entweder im Template oder im js-Code liegt.

hatte das gleiche problem

Ja. Ich habe das gleiche Problem ;)

unreachable code after return statement[Więcej informacji] app.js:5248:4
unreachable code after return statement[Więcej informacji] app.js line 4957 > eval:5248:4
unreachable code after return statement[Więcej informacji] app.js:5248:4
unreachable code after return statement[Więcej informacji] app.js line 5136 > eval:5248:4

Ich verstehe, was es bedeutet, aber ich weiß nicht, wo ich es beheben soll, und alle meine Komponenten durchzugehen, um diese Probleme zu finden, ist eine Menge Arbeit.

screen shot 2018-08-23 at 16 48 17

Hier gilt das gleiche.

vue.common.js bedeutet für mich nichts, wenn ich versuche herauszufinden, wo der Fehler aufgetreten ist.

Ich stimme zu, dass nur die Zeilennummer in der Quelldatei das Debuggen stark beschleunigen wird

irgendwas neues dazu? Warum ist das Problem geschlossen (da das Problem immer noch besteht)?

würde das gerne beheben! Debuggen ist im Moment zu kompliziert, wir brauchen Dateinamen und Zeilennummer für einfacheres Debuggen, bitte beheben

Ich stimme auch zu, meine .vue-Dateien sind so groß und es würde helfen, den genauen Speicherort zu erhalten.

Ich habe einige Fortschritte bei der Bestimmung der Komponente gemacht und kann die Zeilennummer (in vielen Fällen) für den Fehler abrufen. (Ich verwende einzelne Dateikomponenten). Aber es gibt noch viel zu untersuchen. Ich hoffe, meine Erkenntnisse in Zukunft veröffentlichen zu können.

@gpadilla123 Gott

Falls jemand seinen Code immer noch nach fehlerhaften Rückgabeanweisungen durchkämmt, habe ich die Fehlerquelle gefunden, die auftritt, wenn ich sowohl einen Ausdruck als auch einen Funktionsaufruf in der Vorlage verwende:
:class="x=0; getClass()" In diesem Fall wurde die Warnung durch Entfernen von x=0; beseitigt. Nicht, dass dies bei jedem in dieser Liste unbedingt der Fall sein wird, aber eine Erinnerung daran, die Vorlage zu überprüfen.

Bis heute ist es als Kugeln noch unklar. Ich bekomme einen Fehler, wenn vue etwas auswertet, das ich nicht einmal ändere ...

Vue 3.0 sollte dieses Problem lösen, da es bessere Fehlermeldungen geben wird, aber das Veröffentlichungsdatum von Vue 3.0 reicht von Ende Q2 2019 bis Ende 2019. Zu lange für mich zum Warten, also habe ich einen Weg gehackt, um die Leitung zu bekommen Anzahl der Fehler (für einige Fälle). Die gehackte Lösung muss robuster sein und für mehr Fälle funktionieren.

Ja, das bringt mich um, ich habe zumindest erwartet, dass die Zeilennummer oder etwas besser spezifiziert wird

+1

Das ist tödlich. Wir brauchen die Zeilen, auf denen die Fehler auftreten, um korrekt gemeldet zu werden. Im Moment scheine ich völlig nutzlose Zeilennummern von vue.js zu bekommen, wenn ein Fehler auftritt, z.

[Vue warn]: Fehler beim Rendern: "TypeError: Cannot read property '0' of undefined"

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
Es wird Spaß machen, nach der Linie zu suchen. Vor allem, wenn mein Code viele .length enthält.

Nachrichten wie diese sind wie eine wilde Gänsejagd. Keine Ahnung, wo der Fehler herkommt: Ich würde eine Zeilennummer erwarten, den Namen eines Vue, den Namen einer Funktion, die ich erstellt habe und die nicht Teil des Vue-Frameworks ist. Dies geschieht auf Vue 2.5.17. In solchen Fällen hilft auch die vue-Entwicklungserweiterung nicht weiter.

image

Es freut mich zu hören, dass dies in Vue 3.0 behandelt wird. In der Zwischenzeit habe ich einen guten Tipp gefunden: Klicken Sie auf die Fehlerzeilenanzeige in der Konsole, dann setzen Sie einen Breakpoint in die gleiche Zeile in der Quelle von Vue. Sie können dann die Seite neu laden, der Debugger stoppt am Breakpoint, dann können Sie den Stack zurückarbeiten, bis Sie eine Ihrer Komponenten finden, und normalerweise ist der Fehler da.

Es ist nicht perfekt, aber es könnte Ihnen helfen, sich bei einer Fehlersuche zu lösen.

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
Es wird Spaß machen, nach der Linie zu suchen. Vor allem, wenn mein Code viele .length enthält.

Endlich die Linie gefunden.
Es hätte nicht so lange gedauert, wenn das Problem gelöst wäre.

+1, die Konsolenprotokollierung von vue fehlt schmerzlich. Nehmen Sie zum Beispiel das folgende. Es sagt mir den Komponentenstapel, was nett ist, aber es gibt hier keinen Verweis auf die Zeilennummer, und der gesamte Aufrufstapel zeigt auf das Kompilieren von Vue-Code, nicht auf meinen Komponentencode. Es genügt eine Zeilennummer neben dem Komponentennamen.

image

Ich habe auch Probleme beim Debuggen ohne Zeilennummern ...

image

image
Herausforderung angenommen.

Das ist seit Jahren eine Frechheit und ist es immer noch.

Ich habe hier gescrollt in der Hoffnung, dass jemand bereits einen super geheimen Hack dafür oder bereits ein Update hat

+1

TypeError: Cannot read property 'length' of undefined

aber ich habe 30-50.Länge und ich weiß nicht, wo ich einen Fehler gemacht habe.

Wir brauchen wirklich Zeilennummern bei Renderfehlern.

Irgendeine Problemumgehung?

Kann bestätigen, ich bin hier und starre nur auf meinen Code ... ohne Ahnung, warum er fehlschlägt.

Wenn Vue Nachteile hat, wäre dies der einzige

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen