J'utilise
[email protected]
[email protected]
[email protected] (64-bit)
macOS Sierra 10.12.5
[email protected]
[email protected]
Récemment, le débogueur a commencé à s’arrêter sur de mauvaises lignes, mais uniquement visuellement. La plupart du temps, il se situe entre 8 et 14 lignes derrière le point d’arrêt réel.
par exemple.
* la barre orange indique le point d'arrêt dans Google Chrome
sortie de la console:
En outre, comme vous pouvez le constater, certaines lignes sont assombries, ce qui signifie que je ne peux pas définir de point d'arrêt à partir du navigateur.
Le comportement est identique dans le débogueur interne WebStorm. Donc, je pense que ce n'est pas la faute de Chrome. Il semble que le mappage de source soit cassé. Je ne sais pas si c'est WebStorm ou Meteor qui en est la cause. Dans ces conditions, il est très difficile de déboguer ...
Il est difficile de dire avec certitude, mais il semble que le problème que vous rencontrez soit lié à un bogue qui fait que Meteor génère des cartes source incorrectes.
Ce n'est pas la "faute" de votre navigateur. Il affiche simplement le code et la position qui lui est fourni par les cartes source de votre projet.
Le fichier app.js
et la carte source (app.js.map
) sont générés par le processus de construction de Meteor et sont servis à partir du répertoire .meteor/local/build/programs/web.browser/app
.
Le fichier .map
indique au navigateur comment afficher la source d'origine et quels segments du fichier app.js
généré sont mappés à quels segments du code source d'origine.
Une grande explication sur les aspects techniques des cartes sources peut être trouvée ici .
Vous pouvez visualiser vos cartes sources en ligne et voir quelles cartes utilisaient cet outil (choisir custom... et faites glisser/déposez les fichiers .js
et .map
.
Dans le cadre du processus de construction, Meteor utilise le package babel-compiler
Meteor. À un moment donné, un bug a provoqué la création de cartes non valides après les transformations de Babel.
Le bogue est actuellement suivi sur GitHub et les gens de Meteor semblent se rapprocher de la cause.
Pour le moment, il n'y a pas de solution rapide et facile.
Tu peux soit:
La dernière option est ce que @ hwilson a fait afin de pouvoir localiser le bogue via un git bisect
.
Vous pouvez vous référer au document de développement Meteor pour obtenir des informations détaillées sur la méthode d'exécution de l'outil Météor à partir de la caisse, mais l'essentiel est le suivant:
Tout d’abord, assurez-vous que votre code, y compris .meteor/versions
et .meteor/packages
, a bien été extrait dans le contrôle de source, car vous devrez probablement les gâcher temporairement et vouloir les restaurer une fois le bogue corrigé.
git clone --recursive https://github.com/meteor/meteor.git
dans un répertoire de votre choix (par exemple, /home/yourname/src/remote
.cd meteor
.git checkout 25a89b5
pour obtenir le dernier bon commit connu.git submodule update --init --recursive
pour vous assurer que tout est encore en or après la fin du processus../meteor --help
pour que la version extraite démarre.meteor/packages
, car elles seront probablement incompatibles avec celles proposées par votre commande./home/yourname/src/remote/meteor/meteor run
.Ceci exécutera la version vérifiée de Meteor. Vous devrez peut-être faire un meteor reset
(avertissement: cela efface la base de données mongo locale) ou au moins nettoyer une partie de .meteor/local
(par exemple, les cartes sources) pour que cela fonctionne, mais cela peut être inutile.
C’est beaucoup d’efforts pour un bogue qui, je suppose, sera résolu dans un proche avenir, mais j’ai décidé d’inclure cette information en partie afin de pouvoir servir de documentation pour les futurs problèmes liés aux cartes sources.
C'est difficile à dire avec certitude. Sur une recherche Google rapide, il semblerait que vous n'êtes pas le seul à voir cela. Comme @ MasterAM l'a mentionné, c'est probablement à cause des cartes source issues de la transpilation. Je ne pense pas que vous puissiez faire beaucoup de choses à ce sujet, mais vous pouvez essayer d'effacer le navigateur et les caches IDE qui semblent avoir fonctionné pour certains.
Javascript s'arrête sur une ligne sans point d'arrêt en mode débogage distant
Pas sûr de ce scénario, mais avons fait face à une situation similaire lors du débogage de Java avec Eclipse. Cela se produit lorsque le code source et le code compilé/interprété en cours de débogage diffèrent.
Essayez de déboguer un simple code js pour vérifier si le débogueur js de chrome lui-même a un problème. Si cela fonctionne, alors une explication pour les lignes de code qui ne sont pas «activées pour le débogage» serait qu’elles se trouvent toutes sur la même ligne (jusqu’à l’instruction qui enregistre «7»). Cela aurait également pu compenser le numéro de ligne dans le navigateur.
Ceci est une explication possible.