Comment redémarrer un serveur node.js

J’ai installé et exécute un serveur node.js sur osx. J’ai utilisé un module de chat et je le lance avec plaisir. J’ai modifié certaines pièces et j’ai besoin de redémarrer le serveur pour voir les effets.

Je ne sais que redémarrer en fermant la fenêtre du terminal, puis en le rouvrant et en exécutant à nouveau node chatdemo.js.

Un moyen de redémarrer sans fermer le terminal?

Merci.

Si c’est juste en cours d’exécution (pas un démon), utilisez simplement Ctrl-C .

S’il est démonisé, vous pouvez essayer:

 $ ps aux | grep node you PID 1.5 0.2 44172 8260 pts/2 S 15:25 0:00 node app.js $ kill -2 PID 

PID est remplacé par le nombre dans la sortie de ps .

Au cours du développement, le meilleur moyen de redémarrer le serveur pour voir les modifications apscopes est d’utiliser nodemon

npm install nodemon -g

nodemon [nom de votre application]

nodemon surveillera les fichiers du répertoire dans lequel nodemon a été démarré, et s’ils changent, il redémarrera automatiquement votre application de noeud.

Vérifiez nodemon git repo: https://github.com/remy/nodemon

Dans ce cas, vous redémarrez souvent votre serveur node.js car il est en développement actif et que vous apportez des modifications à tout moment. Il y a un bon script de rechargement à chaud qui va gérer cela en regardant tous vos fichiers .js et en redémarrant votre serveur node.js si l’un de ces fichiers a changé. Juste le ticket pour un développement et un test rapides.

Le script et l’explication de son utilisation sont ici chez Draco Blue .

J’ai eu le même problème, puis j’ai écrit ce script shell qui tue tous les processus de nœud existants:

 #!/bin/bash echo "The following node processes were found:" ps aux | grep " node " | grep -v grep nodepids=$(ps aux | grep " node " | grep -v grep | cut -c10-15) echo "OK, so we will stop these process/es now..." for nodepid in ${nodepids[@]} do echo "Stopping PID :"$nodepid kill -9 $nodepid done echo "Done" 

Une fois ceci enregistré dans un fichier de script shell (xxx.sh), vous voudrez peut-être l’append à votre PATH comme décrit ici .

(Veuillez noter que cela va tuer tous les processus avec “node” dans son nom, sauf ceux de grep, donc je suppose que dans certains cas, cela peut aussi tuer d’autres processus avec un nom similaire)

Je comprends que mon commentaire concerne les fenêtres, mais que quelqu’un peut être utile. Pour gagner courir dans cmd:

 wmic process where "commandline like '%my_app.js%' AND name='node.exe' " CALL Terminate 

alors vous pouvez exécuter votre application à nouveau:

 node my_app.js 

Vous pouvez également l’utiliser dans un fichier de commandes, avec des guillemets d’échappement:

 wmic process where "commandline like '%%my_app.js%%' AND name='node.exe' " CALL Terminate node my_app.js 

Utiliser “kill -9 [PID]” ou “killall -9 node” a fonctionné pour moi où “kill -2 [PID]” ne fonctionnait pas.

Si je ne fais que lancer l’application nœud depuis la console (sans utiliser pour toujours etc), j’utilise control + C, je ne suis pas sûr que OSX ait la même combinaison de touches pour terminer mais code suivant à l’application de chat que vous utilisez, puis tapez «exit» dans la console lorsque vous souhaitez fermer l’application.

 process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.on('data', function(data) { if (data == 'exit\n') process.exit(); }); 

Dire “nodemon” répondrait à la question.

Mais sur la seule façon de tuer (tous) les démons de nœuds, ce qui suit fonctionne pour moi:

 pkill -HUP node