Vue: Améliorer les informations des messages d'avertissement

Créé le 2 oct. 2016  ·  40Commentaires  ·  Source: vuejs/vue

Il dit "Vue Warn : Le gestionnaire pour le clic sur l'événement n'est pas défini"
Il y a une erreur quelque part liée au clic sur l'événement, j'ai des centaines de composants avec des événements de clic. Dans quel composant/fichier vais-je obtenir l'erreur ?

erroe

improvement

Commentaire le plus utile

J'utilise Vue 2. Ce n'est pas un bug. C'est un message d'erreur qui ne sert à rien. Eh bien, Vue peut prendre cela comme une suggestion pour améliorer le style du message d'erreur et le rendre spécifique. Ainsi, en cas d'erreur, si un développeur commet une erreur, il peut la corriger en peu de temps en sachant exactement où se trouve l'erreur. Par rapport à React JS, ils affichent le nom du composant ainsi que le numéro de ligne et bien sûr l'erreur également.

Tout ce que je souhaite, il y a un message d'erreur pour être précis.

Tous les 40 commentaires

Ce problème classé nécessite plus d'informations. Utilisez-vous vue 2 ou vue 1.
Est-ce un bug ou une suggestion ? si bug alors un lien reproductible sur jsfiddle.
Si l'un de vos composants n'a pas de fonction de gestionnaire, cela ne peut pas être un problème de vue.

//Meilleur

J'utilise Vue 2. Ce n'est pas un bug. C'est un message d'erreur qui ne sert à rien. Eh bien, Vue peut prendre cela comme une suggestion pour améliorer le style du message d'erreur et le rendre spécifique. Ainsi, en cas d'erreur, si un développeur commet une erreur, il peut la corriger en peu de temps en sachant exactement où se trouve l'erreur. Par rapport à React JS, ils affichent le nom du composant ainsi que le numéro de ligne et bien sûr l'erreur également.

Tout ce que je souhaite, il y a un message d'erreur pour être précis.

Il y a beaucoup de messages dans Vue qui ne disent pas grand-chose. Les contrôles de sécurité de Vue semblent faire défaut, malheureusement.

Je suppose que si vue peut ajouter un peu plus d'informations à ses avertissements -

Nom du composant
type de composant
ou
peut rendre le message d'avertissement configurable pour le développement env.

Nous essayons de fournir des informations sur les composants chaque fois que nous le pouvons, celui-ci peut être un oubli.

@just-nobody, veuillez fournir des exemples spécifiques des messages qui manquent afin que nous puissions nous améliorer - se plaindre ne sert à rien.

Je ne me plaignais pas vraiment ; J'ai pensé que c'était juste quelque chose que les gens savaient déjà. J'ai rencontré de nombreux petits cas marginaux dans le passé qui ont donné un message étrange et indescriptible du problème réel, mais à la place enraciné profondément dans la source, et d'autres problèmes n'ont pas émis d'erreur et ont plutôt causé un rendu étrange punaise. Certains étaient plus faciles à retrouver que d'autres, donc je n'ai pas pris la peine de les signaler car je pensais que c'était juste moi qui suis stupide, mais un en particulier pour lequel j'ai en fait créé une pull request parce qu'il m'a fallu tellement de temps pour comprendre ce qui n'allait pas. .

J'imagine que beaucoup d'entre eux sont corrigés maintenant que la version 2.0.1 est sortie, mais je suppose que je suis mauvais pour rester silencieux. Un message aux lecteurs : si vous pensez qu'il s'agit d'un bogue, signalez-le, même si ce n'est peut-être pas un bogue.

@yyx990803 Même, fournir la clé de nom d'un composant n'aide pas beaucoup. Merci d'être passé et d'avoir ajouté ce problème en tant qu'amélioration.

:) merci Evan

Salut, j'ai remarqué récemment que le manque de numéros de ligne rend les choses très difficiles à déboguer, surtout si le composant est volumineux. J'ai un composant avec quelques milliers de lignes. j'ai reçu un avertissement
"[Vue warn] : Erreur dans la fonction de rendu : "TypeError : _vm.values[item.name] is undefined""

Il y a un nom de composant, mais pas de numéro de ligne dans ma console Firefox. Pour ce genre de cas, il serait vraiment utile d'avoir un numéro de ligne spécifié. Bien sûr, je peux diviser le composant en plusieurs plus petits ou simplement parcourir toutes ces lignes avec la recherche de l'éditeur, mais ce n'est pas le problème.

Veuillez envisager d'ajouter des numéros de ligne dans les prochaines versions. Merci.

+1 Veuillez ajouter des numéros de ligne.

J'ai le prochain message,

vue.js:577 [Vue warn] : Erreur de rendu : "TypeError : Impossible de lire la propriété 'length' of undefined"
(trouvé dans)

Je sais pourquoi cela échoue, sur cette construction " variable.length" if variable == null. Le problème est que j'ai beaucoup de constructions ".length", les données proviennent d'un service externe.

Idem pour moi @ameoba32
J'ai "Impossible de lire la propriété 'longueur' indéfinie" et je ne trouve pas où est le problème. C'est une grosse webapp donc c'est difficile.
Je suppose que j'ai trouvé le fichier en cause mais je ne sais pas où se trouve exactement l'erreur.
Dois-je rayer ligne par ligne pour trouver la ligne cassée ? xD

Idem ici comme @ameoba32 . @yyx990803 Veuillez faire quelque chose. Merci!

J'aime beaucoup vue et je travaille avec elle depuis deux ans. Le manque de spécificité d'une erreur RENDER est ma plainte/demande à corriger n°1. Cette erreur se produit soit dans le modèle, soit dans le code js correspondant. Un numéro de ligne aiderait grandement, ou même si le problème se situe dans le modèle ou le code js.

eu le même problème

Oui. J'ai le même problème ;)

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

Je comprends ce que cela signifie, mais je ne sais pas où je dois le réparer et passer en revue tous mes composants pour trouver ces problèmes représente beaucoup de travail.

screen shot 2018-08-23 at 16 48 17

Pareil ici.

vue.common.js ne signifie rien pour moi lorsque j'essaie de trouver où s'est produite l'erreur.

Je suis d'accord, que seul le numéro de ligne dans le fichier source accélérera beaucoup le débogage

rien de nouveau à ce sujet ? pourquoi le problème est-il clos (puisque le problème est toujours là) ?

j'adorerais que ça soit réglé ! le débogage est trop compliqué en ce moment, nous avons besoin d'un nom de fichier et d'un numéro de ligne pour un débogage plus facile, veuillez corriger

Je suis également d'accord, mes fichiers .vue sont si volumineux et obtenir l'emplacement exact aiderait.

J'ai fait des progrès dans la détermination du composant et je peux obtenir le numéro de ligne (dans de nombreux cas) pour l'erreur. (J'utilise des composants à fichier unique). Mais il reste encore beaucoup d'enquêtes à faire. J'espère publier mes découvertes à l'avenir.

@ gpadilla123 Dieu vitesse monsieur. Dans l'attente de votre travail.

Au cas où des personnes rechercheraient encore dans leur code des instructions de retour mal formées, j'ai trouvé la source de l'erreur se produisant lorsque j'utilise à la fois une expression et un appel de fonction dans le modèle :
:class="x=0; getClass()" dans ce cas, la suppression de x=0; a supprimé l'avertissement. Non pas que ce sera nécessairement le cas pour n'importe qui dans cette liste, mais un rappel pour vérifier le modèle.

Même à ce jour, ce n'est toujours pas clair comme des boules. Je reçois une erreur lorsque vue évalue quelque chose que je ne change même pas...

Vue 3.0 devrait résoudre ce problème car il y aura de meilleurs messages d'erreur, mais la date de sortie de Vue 3.0 va de la fin du deuxième trimestre 2019 à la fin 2019. Trop long pour que j'attende, j'ai donc piraté un moyen d'obtenir la ligne numéros des erreurs (pour certains cas). La solution piratée doit être plus robuste et fonctionner pour plus de cas.

oui ça me tue, je m'attendais au moins au numéro de ligne ou quelque chose pour mieux préciser

+1

C'est mortel. Nous avons besoin que les lignes sur lesquelles les erreurs se produisent soient signalées correctement. Pour le moment, il me semble que les numéros de ligne vue.js sont complètement inutiles lorsqu'une erreur se produit, par exemple.

[Vue warn] : Erreur dans le rendu : "TypeError : Impossible de lire la propriété '0' d'undefined"

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
Ce sera amusant de chercher la ligne. Surtout quand il y a plein de .length dans mon code.

Des messages comme ceux-ci sont comme une chasse à l'oie sauvage. Aucune idée de l'origine de l'erreur : j'attendrais un numéro de ligne, le nom d'une vue, le nom d'une fonction que j'ai créée et qui ne fait pas partie du framework Vue. Cela se produit sur la vue 2.5.17. Il n'y a pas non plus d'aide de l'extension de développement vue dans des cas comme ceux-ci.

image

Heureux d'apprendre que cela sera abordé dans Vue 3.0. En attendant j'ai trouvé une bonne astuce : cliquez sur l'indicateur de ligne d'erreur dans la console, puis placez un point d'arrêt sur la même ligne dans le source de Vue. Vous pouvez ensuite recharger la page, le débogueur s'arrêtera sur le point d'arrêt, puis vous pourrez remonter la pile jusqu'à ce que vous trouviez l'un de vos composants, et généralement l'erreur est là.

Ce n'est pas parfait mais cela pourrait vous aider à vous débloquer dans une chasse aux bogues.

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
Ce sera amusant de chercher la ligne. Surtout quand il y a plein de .length dans mon code.

Enfin trouvé la ligne.
Cela n'aurait pas pris si longtemps si le problème avait été résolu.

+1, la journalisation de la console de vue fait cruellement défaut. Prenez l'exemple ci-dessous. Il me dit la pile de composants, ce qui est bien, mais il n'y a aucune référence au numéro de ligne ici, et toute la pile d'appels pointe vers la compilation du code vue, pas mon code de composant. Un numéro de ligne à côté du nom du composant est tout ce dont il a besoin.

image

J'ai aussi des problèmes de débogage sans numéros de ligne...

image

image
Défi accepté.

Cela a été une déception pendant des années et l'est toujours.

je faisais défiler ceci en espérant que quelqu'un aurait déjà un hack super secret pour cela ou une mise à jour déjà

+1

TypeError: Cannot read property 'length' of undefined

mais j'ai 30-50.longueur et je ne sais pas où j'ai fait une erreur.

Nous avons vraiment besoin du numéro de ligne dans les erreurs de rendu.

Une solution de contournement ?

Je peux confirmer, je suis ici en train de regarder mon code... sans aucune idée de la raison pour laquelle il échoue.

Si Vue a des inconvénients ce serait le seul

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