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:
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
Vous devez envoyer kill -s USR1 sur process2
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?
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
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 instructionSi 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.
Pour démarrer node.js en mode débogage, je l'ai fait de cette façon:
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:
lorsque vous démarrez meteor dans votre dossier d'application meteor, vous verrez que "débogueur écoutant sur le port 5858" dans la console.
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>
Où <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.
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!
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
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.
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 .
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.
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:
Dans votre dossier de projet, ajoutez le package intelligent server-eval
:
mrt add server-eval
Pour Meteor 1.0:
meteor add gandev:server-eval
Redémarrez le météore.
crx
Chrome depuis ici .crx
vers la page des extensions.Vérifiez l'inspecteur Web pour évaluer le code côté serveur:
En comparaison avec l'inspecteur de noeud, j'ai une sortie plus claire.
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 .
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
.