web-dev-qa-db-fra.com

Meteor: Debug côté serveur

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

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

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

  1. Lorsque vous exécutez Meteor, il engendrera 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 process2

  3. Exécutez l'inspecteur de noeud et vous pouvez voir le code de votre serveur

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

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

et courir NODE_DEBUG=--debug meteor à l'invite de commande. Cela n'a mis que l'indicateur --debug sur process1, donc je ne vois que les fichiers de météores 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?

78
user1416682

Dans Meteor 0.5.4, cela est devenu beaucoup plus facile:

Exécutez d'abord les commandes suivantes à partir du terminal:

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

Et puis ouvrez http://localhost:8080 dans votre navigateur pour afficher la console d'inspection des 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 noeud dans votre navigateur comme mentionné.

Mise à jour

Dans Meteor 1.0.2, une console ou un shell a été ajouté. Il peut être utile de générer des variables et d'exécuter des commandes sur le serveur:

meteor Shell
88
Sander van den Akker

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

Exemples de NODE_OPTIONS valeurs des variables d'environnement:

  • --debug
  • --debug=47977 - spécifiez un port
  • --debug-brk - pause sur la première déclaration
  • --debug-brk=5858 - spécifiez un port et coupez la première instruction

Si vous export NODE_OPTIONS=--debug, toutes les commandes meteor exécutées à partir du même shell hériteront 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 accédez à http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>, quel que soit node-inspector vous dit de courir.

16
Sergey.Simonchik

Pour démarrer node.js en mode débogage, je l'ai fait de cette façon:

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

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

    ajouter

    nodeOptions.Push('--debug');
    

Voici des étapes pratiques supplémentaires pour attacher le débogueur Eclipse:

  1. utilisez '--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 souhaitez déboguer (je préfère cette façon personnellement)
  3. exécuter météore dans la console
  4. attacher à node.js dans Eclipse (outils V8, attacher à localhost: 5858)
  5. courir, attendre que le débogueur soit touché

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

10
Mason Zhang

Sur Meteor 1.0.3.1 (mise à jour de la réponse de Sergey.Simonchik)

Démarrez votre serveur avec meteor run --debug-port=<port-number>

Pointez le navigateur sur http://localhost:6222/debug?port=<port-number>

<port-number> est un port que vous spécifiez.

Dans votre code, ajoutez un debugger; où vous souhaitez définir votre point d'arrêt.

Selon où debugger; est invoqué, il se brisera sur la fenêtre du navigateur de votre client ou serveur avec l'inspecteur ouvert.

10
ferndopolis

J'aime définir des points d'arrêt via une interface graphique. De cette façon, je n'ai pas à me souvenir de supprimer le code de débogage de mon application.

Voici comment j'ai réussi à le faire côté serveur pour mon application météorite locale:

meteor debug

démarrez votre application de cette façon.

Ouvrez Chrome à l'adresse qu'il vous donne. Vous POUVEZ avoir besoin d'installer https: // github .com/node-inspector/node-inspector (il pourrait être fourni avec Meteor maintenant? pas sûr)

Vous verrez un code de météore interne étrange (pas le code d'application que vous avez écrit). Appuyez sur play pour exécuter le code. Ce code démarre simplement votre serveur pour écouter les connexions.

Ce n'est qu'après avoir appuyé sur play que vous verrez un nouveau répertoire dans votre structure de dossiers de débogueur appelé "app" . Il y a vos fichiers de projet de météore. Définissez-y un point d'arrêt sur la ligne souhaitée.

Ouvrez l'adresse locale de votre application . Cela exécutera votre code côté serveur et vous devriez pouvoir atteindre votre point d'arrêt!

Remarque: vous devez rouvrir l'inspecteur et recommencer ce processus à chaque redémarrage de votre application!

7
Sabrina Leggett

Depuis Meteor 1.0.2, le meilleur moyen de débogage côté serveur est directement via le nouveau shell intégré: avec l'exécution du serveur exécutée meteor Shell. Plus d'informations ici: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-Shell

6
Christian Fritz

Je ne sais pas pourquoi cela ne fonctionnait pas pour vous.
Je peux 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 . C'est pour attacher l'inspecteur de noeud au processus de noeud en cours d'exécution.

5
Nachiket

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

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

4
broth-eu

pour météore 1.3.5.2, exécutez

meteor debug --debug-port 5858 + n n est un nombre différent de zéro, ce qui amènera l'inspecteur de nœuds à utiliser 8080 + n comme port Web.

4
user7378851

Un inspecteur qui résout mes problèmes est la console du serveur de météores. Voici le processus que j'ai suivi pour l'installer:

  1. Dans votre dossier de projet, ajoutez le package intelligent server-eval:

    mrt add server-eval
    

    Pour Meteor 1.0:

    meteor add gandev:server-eval
    
  2. Redémarrez le météore.

  3. Téléchargez crx Chrome depuis ici .
  4. Ouvrez la page des extensions dans Chrome et faites glisser le fichier crx vers la page des extensions.
  5. Redémarrez Chrome.
  6. Vérifiez l'inspecteur Web pour évaluer le code côté serveur:

    enter image description here

En comparaison avec l'inspecteur de noeud, j'ai une sortie plus claire.

3
juanpastas

WebStorm , le puissant IDE gratuit pour les développeurs open source, facilite le débogage côté serveur.

Je l'ai testé sur Windows et la configuration était indolore - voir ma réponse .

3
Dan Dascalescu

Si vous préférez utiliser débogueur officiel de nodeJS vous pouvez appeler NODE_OPTIONS='--debug' meteor puis (sur un autre Shell) node debug localhost:5858.

2
Tomas Romero