Vous créez l'application node.js avec express v4.x, puis démarrez votre application par npm start . Ma question est de savoir comment arrêter l'application? Y a-t-il un arrêt npm ?
EDIT pour inclure l'erreur lors de la mise en œuvre de l' arrêt npm
/home/nodetest2# npm stop
> nodetest2@0.0.1 stop /home/nodetest2
> pkill -s SIGINT nodetest2
pkill: invalid argument for option 's' -- SIGINT
npm ERR! nodetest2@0.0.1 stop: `pkill -s SIGINT nodetest2`
npm ERR! Exit status 2
--signal
. Utilisezman pkill
pour lire sur pkill.Toutes les autres solutions ici dépendent du système d'exploitation. Une solution indépendante pour tout système d'exploitation utilise socket.io comme suit.
package.json
a deux scripts:server.js - Vos trucs express habituels vivent ici
server.stop.js
Testez-le
npm start
(pour démarrer votre serveur comme d'habitude)npm stop
(cela arrêtera maintenant votre serveur en cours d'exécution)Le code ci-dessus n'a pas été testé (c'est une version réduite de mon code, mon code fonctionne) mais j'espère qu'il fonctionne tel quel. Dans tous les cas, il fournit la direction générale à suivre si vous souhaitez utiliser socket.io pour arrêter votre serveur.
la source
Lorsque j'ai essayé la solution suggérée, j'ai réalisé que le nom de mon application était tronqué. J'ai lu
process.title
dans la documentation nodejs ( https://nodejs.org/docs/latest/api/process.html#process_process_title ) et il est ditMon application n'utilise aucun argument, je peux donc ajouter cette ligne de code à mon
app.js
puis ajoutez ces quelques lignes à mon
package.json
fichierpour utiliser des noms de processus très longs.
npm start
et lenpm stop
travail, bien sûr,npm stop
mettra toujours fin à tous les processus en cours d'exécution, mais cela me convient.la source
Ceci est un problème de version mintty ou utilisez cmd. Pour tuer le processus serveur, exécutez simplement cette commande:
la source
Sous MAC OS X (/ BSD): vous pouvez essayer d'utiliser la commande lsof (lister les fichiers ouverts)
et donc
la source
Vérifier avec netstat -nptl tous les processus
Et cela tue simplement le processus par la référence PID .... Dans mon cas, je veux arrêter le 6231 / nodejs donc j'exécute la commande suivante:
la source
Voici une autre solution qui mélange les idées des réponses précédentes. Il adopte l'approche du «processus d'élimination» tout en répondant aux préoccupations concernant l'indépendance de la plate-forme.
Il s'appuie sur le package tree-kill pour gérer la destruction de l'arborescence des processus du serveur. J'ai trouvé nécessaire de tuer tout l'arborescence des processus dans mes projets car certains outils (par exemple
babel-node
) génèrent des processus enfants. Si vous n'avez besoin de tuer qu'un seul processus, vous pouvez remplacer tree-kill par laprocess.kill()
méthode intégrée .La solution suit (les deux premiers arguments à
spawn()
doivent être modifiés pour refléter la recette spécifique pour exécuter votre serveur):build / start-server.js
build / stop-server.js
package.json
Notez que cette solution détache le script de démarrage du serveur (ie
npm start
retournera immédiatement et ne bloquera pas tant que le serveur ne sera pas arrêté). Si vous préférez le comportement de blocage traditionnel, supprimez simplement l'options.detached
argument àspawn()
et l'appel àchild.unref()
.la source
Si vous avez déjà essayé
ctrl + c
et que cela ne fonctionne toujours pas, vous pouvez essayer ceci. Cela a fonctionné pour moi.Exécutez la ligne de commande en tant qu'administrateur. Exécutez ensuite la commande ci-dessous pour trouver le processID (PID) que vous souhaitez supprimer. Tapez votre numéro de port dans
<yourPortNumber>
netstat -ano | findstr :<yourPortNumber>
Ensuite, vous exécutez cette commande après avoir identifié le PID.
taskkill /PID <typeYourPIDhere> /F
Félicitations à @mit $ ingh de http://www.callstack.in/tech/blog/windows-kill-process-by-port-number-157
la source
Si c'est très simple, il suffit de tuer le processus.
la source
Pour Windows Machine (je suis sous Windows 10), si la commande CTRL + C (Annuler / Abandonner) sur cli ne fonctionne pas et que l'écran s'affiche comme ceci:
Essayez d'abord d'appuyer sur ENTRÉE (ou n'importe quelle touche le ferait), puis CTRL + C et le processus en cours vous demandera si vous souhaitez terminer le travail par lots:
Peut-être que CTRL + C termine uniquement le processus parent tandis que npm start s'exécute avec d'autres processus enfants. Je ne sais pas pourquoi vous devez appuyer sur cette touche supplémentaire avant CTRL + C, mais cela fonctionne mieux que de fermer la ligne de commande et de recommencer.
Un problème connexe que vous voudrez peut-être vérifier: https://github.com/mysticatea/npm-run-all/issues/74
la source
Pour les environnements de production, vous devez utiliser Forever.js
C'est tellement utile pour le processus de démarrage et d'arrêt du nœud que vous pouvez également répertorier les applications en cours d'exécution.
https://github.com/foreverjs/forever
la source
Vous pouvez utiliser pm2
https://pm2.keymetrics.io/docs/usage/quick-start/
après l'installation, tapez simplement le terminal
pm2 start app.js
puispm2 stop 0
pour arrêter votre serveurla source
Dans le cas où votre fichier json n'a pas de script pour arrêter l'application, une option que j'utilise consiste simplement à appuyer sur ctrl + C sur la cmd.
la source
Toute (3) solotion est:
1- ctlr + C
2- dans le fichier json, un script qui s'arrête
"scripts": {"stop": "killall -SIGINT ce-nom-peut-être-aussi-long-qu'il-doit-être"},
* que dans la commande write // npm stop //
3- Redémarrez le pc
la source
Vous devez appuyer sur la combinaison ctrl + z Mon système d'exploitation est Ubuntu
la source