78 votes

Meteor : Débogage côté serveur

Quelqu'un connaît-il une bonne méthode pour déboguer du code côté serveur ? J'ai essayé d'activer le débogage de Node.js puis d'utiliser node-inspector mais il ne montre aucune partie de mon code.

Je finis par utiliser console.log mais c'est très inefficace.

Mise à jour : J'ai constaté que la procédure suivante fonctionne sur ma machine Linux :

  1. Quand vous lancez Meteor, il va créer deux processus

    process1 : /usr/lib/meteor/bin/node /usr/lib/meteor/app/meteor/meteor.js

    process2 : /usr/lib/meteor/bin/node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive

  2. Vous devez envoyer kill -s USR1 sur le processus2.

  3. Lancez node-inspector et vous pourrez voir le code de votre serveur.

Lors de mon premier essai, je modifie la dernière ligne sur le démarrage de meteor script dans /usr/lib/meteor/bin/meteor en

exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@"

et exécuter NODE_DEBUG=--debug meteor à l'invite de commande. Cela a seulement mis le drapeau --debug sur process1, donc je ne vois que les fichiers meteor sur node-inspector et je n'ai pas pu trouver mon code.

Quelqu'un peut-il vérifier cela sur une machine Windows et Mac ?

88voto

Dans Meteor 0.5.4, cela est devenu beaucoup plus facile :

Exécutez d'abord les commandes suivantes dans le terminal :

npm install -g node-inspector
node-inspector &
export NODE_OPTIONS='--debug-brk'
meteor

Et ensuite ouvrir http://localhost:8080 dans votre navigateur pour afficher la console de l'inspecteur de nœuds.

Mise à jour

Depuis Meteor 1.0, vous pouvez simplement taper

meteor debug

qui est essentiellement un raccourci pour les commandes ci-dessus, puis lancez l'inspecteur de nœuds dans votre navigateur comme mentionné.

Mise à jour

Dans Meteor 1.0.2, une console ou un shell a été ajouté. Il peut s'avérer utile pour afficher des variables et exécuter des commandes sur le serveur :

meteor shell

16voto

Sergey.Simonchik Points 326

Les applications Meteor sont des applications Node.js. Lorsque vous exécutez une application Meteor avec l'option meteor [run] vous pouvez configurer le NODE_OPTIONS variable d'environnement pour lancer node en mode débogage .

Exemples de NODE_OPTIONS les valeurs des variables d'environnement :

  • --debug
  • --debug=47977 - spécifier un port
  • --debug-brk - pause sur la première déclaration
  • --debug-brk=5858 - spécifier un port et s'arrêter sur la première déclaration

Si vous export NODE_OPTIONS=--debug tous meteor exécutée à partir du même shell héritera de la variable d'environnement. Alternativement, vous pouvez activer le débogage pour une seule exécution, avec NODE_OPTIONS="--debug=47977" meteor .

Pour déboguer, exécutez node-inspector dans un autre shell, puis allez dans http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS> indépendamment de ce que node-inspector vous dit de courir.

10voto

Mason Zhang Points 1747

Pour démarrer node.js en mode débogage, j'ai procédé de la manière suivante :

  1. ouvrir /usr/lib/meteor/app/meteor/run.js
  2. avant

    nodeOptions.push(path.join(options.bundlePath, 'main.js')); 

    ajouter

    nodeOptions.push('--debug');

Voici d'autres étapes pratiques pour vous permettre d'attacher le débogueur eclipse :

  1. utiliser '--debug-brk' au lieu de '--debug' ici, car il est plus facile pour moi d'attacher node.js en utilisant eclipse comme débogueur.
  2. ajoutez 'debugger;' dans le code où vous voulez déboguer (je préfère personnellement cette méthode).
  3. lancer meteor dans la console
  4. attachement à node.js dans eclipse (outils V8, attachement à localhost:5858)
  5. exécuter, attendre que le débogueur soit touché

lorsque vous démarrez meteor dans le dossier de votre application meteor, vous verrez que " débogueur écoutant sur le port 5858 " dans la console.

5voto

Nachiket Points 2105

Je ne sais pas pourquoi cela ne fonctionnait pas pour vous.
Je suis capable de l'utiliser en suivant les étapes sur la console (Mac).

$ ps  
$ kill -s USR1 *meteor_node_process_id*  
$ node-inspector &

Les étapes ci-dessus sont mentionnées sur https://github.com/dannycoates/node-inspector . Il permet d'attacher l'inspecteur de nœud au processus de nœud en cours.

4voto

broth-eu Points 11

J'ai écrit un petit paquet meteor appelé inspecteur des météores qui simplifie l'utilisation de node-inspector pour déboguer les applications Meteor. Il gère en interne le cycle de vie de node-inspector et l'utilisateur n'a donc pas besoin de redémarrer manuellement le débogueur après la modification de certains fichiers.

Pour plus de détails et des instructions d'utilisation concrètes, consultez le site suivant https://github.com/broth-eu/meteor-inspector .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X