web-dev-qa-db-fra.com

Node.js: Comment se connecter à un processus en cours et déboguer le serveur avec une console?

J'utilise 'pour toujours' pour exécuter mon application. Je souhaite me connecter à l'environnement en cours pour inspecter mon application. Alors qu'est-ce que je peux faire? 

24
Croplio

De http://nodejs.org/api/debugger.html :

Utilisation avancée

Le débogueur V8 peut être activé et accessible en démarrant Node avec l'indicateur de ligne de commande --debug ou en signalant un Processus de nœud existant avec SIGUSR1.

Trouvez le PID de votre processus node et envoyez ensuite SIGUSR1 devrait faire l'affaire:

kill -s SIGUSR1 nodejs-pid

Ensuite, lancez node-inspector et naviguez jusqu'à l'URL indiquée. Plus dans ce tutoriel .

40
Bill

À partir de Node 6.3, le noeud a un débogueur intégré qui peut être déclenché (même dans une application de production) en faisant:

kill -USR1 <node-pid>

Le processus de nœud va cracher quelque chose comme ceci:

Debugger listening on ws://127.0.0.1:9229/f3f6f226-7dbc-4009-95fa-d516ba132fbd
For help see https://nodejs.org/en/docs/inspector
  • Si vous pouvez accéder au serveur à partir d'un navigateur, vous pouvez utiliser chrome://inspect on http://Host.domain:9229.
  • Si vous ne pouvez pas vous connecter via un navigateur (le serveur est dans un cluster de production avec pare-feu), vous pouvez activer un REPL pour inspecter par la ligne de commande:

    node inspect -p <node-pid>
    

Avant cette version, node-inspector était un outil distinct pour le débogage des processus nodaux. Toutefois, comme indiqué sur sa propre page, il est généralement déconseillé, car le débogueur désormais intégré est maintenu activement et fournit des fonctionnalités plus avancées. Pour plus d'informations sur cette modification, voir ce fil de discussion .

7
Andrew Mao

Vous pouvez ajouter un REPL à votre application. Par exemple, si vous ajoutez un REPL pour écouter sur le port localhost 5001, vous démarrez votre application comme d'habitude et vous vous connectez avec telnet: telnet localhost 5001. Cela vous mènera à une invite où vous pouvez interagir directement avec votre application.

Sinon, si votre application a besoin de "mettre en pause" lorsqu'elle atteint un certain état, vous devez ajouter "débogueur;" lignes aux zones de votre code où vous voulez ces points d'arrêt, puis démarrez l'application dans debug mode. 

J'espère que cela pourra aider.

5
danmactough

Pour moi, sous la version 6.9.10 du nœud, je devais

kill -USR1 <node-pid>

puis

node debug -p <node-pid>

la commande node inspect -p <node-pid> a échoué pour cette version du noeud.

1
zink02

Pour inspecter nodejs et le déboguer, utilisez cette commande 

forever -w -c 'node --inspect=IP:PORT' file.js

  • -c si pour une commande custom 
  • utilisez -w pour recharger si le fichier est re-save
  • Vous pouvez passer ip et le port pour external inspect
  • le port personnalisé est 9229
0
DarckBlezzer

Même si c’est une vieille question à laquelle il a été répondu, il existe un moyen plus simple, qui consiste à transmettre des paramètres au nœud:

forever start -c 'node --debug-brk' main.js

Si vous ne voulez pas attendre que le débogueur soit attaché, remplacez --debug-brk par --debug

0
Miquel