Quand je démarre mon serveur avec node app.js
dans la ligne de commande (avec Git Bash), je peux l'arrêter avec ctrl + C.
Dans mon fichier package.json, j'ai ce script de démarrage qui me permet d'utiliser la commande npm start
pour démarrer le serveur:
"scripts": {
"start": "node app"
},
Quand je fais cela, le serveur démarre normalement:
$ npm start
> [email protected] start C:\Projects\nodekb
> node app.js
Server started on port 3000...
Mais quand je ctrl + C maintenant, le serveur n'est pas arrêté (le processus de noeud reste dans le gestionnaire de tâches). Cela signifie que je reçois une erreur lorsque j'essaie de refaire npm start
, car le port 3000 est toujours utilisé.
Je suis un tutoriel sur youtube ( vidéo avec timestamp ), et quand ce gars ctrl + C, puis exécute à nouveau npm start
, cela fonctionne normalement.
Des idées pour lesquelles mon processus de serveur n'est pas arrêté quand j'utilise ctrl + C?
Mon fichier app.js si nécessaire:
var express = require("express");
var path = require("path");
//Init app
var app = express();
//Load View Engine
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "pug");
//Home Route
app.get("/", function(req, res) {
res.render("index", {
title: "Hello"
});
});
//Add route
app.get("/articles/add", function (req, res) {
res.render("add_article", {
title: "Add Article"
});
});
//Start server
app.listen(3000, function() {
console.log("Server started on port 3000...");
});
Merci!
Je l'ai essayé sur Windows normal cmd, et cela a fonctionné comme il se doit On dirait que c'est un problème avec git bash.
J'ai eu le même problème avec npm
. Mais finalement, je savais que c’était un problème avec git lui-même.
Dscho a commenté GitHub il y a 15 jours. Il a dit qu'ils travaillaient à résoudre ce problème dans la prochaine version. Il a également partagé le fichier exact msys-2.0.dll
qui peut résoudre le problème pour les personnes qui ne peuvent pas attendre.
Personnellement, je ne pouvais pas attendre: p. J'ai donc essayé, téléchargé le fichier et le jeté dans le dossier git, comme il l'a dit. Et le problème est parti! C'était génial!
Mais veillez à effectuer une sauvegarde avant de remplacer le fichier.
J'ai aussi essayé de le tuer après avoir exécuté express
comme je le faisais auparavant; en utilisant taskkill /im node.exe
sur la cmd
mais il n’y avait aucun processus à trouver.
Consultez ce problème sur GitHub , et recherchez le nom du fichier msys-2.0.dll
pour obtenir le commentaire plus rapidement.
J'utilise git bash sur ma machine Windows et je suis confronté à ce problème depuis environ un mois.
Je ne sais toujours pas ce qui le cause mais j'ai trouvé un autre moyen de l'arrêter.
Cela m'a permis d'arrêter le serveur rapidement.
Ctrl + C ne tue pas le serveur. La résolution du problème utilisait l'extrait de code suivant dans server.js:
process.on('SIGINT', function() {
console.log( "\nGracefully shutting down from SIGINT (Ctrl-C)" );
// some other closing procedures go here
process.exit(1);
});
Cela a fonctionné pour moi.
Vous pouvez également rechercher d'autres solutions mentionnées à Arrêt progressif dans NodeJS
J'ai rencontré ce problème dans MSYS2 approprié , même dans la dernière version (x64 2018-05-31).
Heureusement, Git pour Windows conservez un environnement d’exécution MSYS2 personnalisé. Ils ont des correctifs qui n’ont pas été envoyés en amont, notamment un correctif qui corrige l’émulation de SIGINT, SIGTERM et SIGKILL .
Discussion: https://github.com/nodejs/node/issues/16103
J'ai été en mesure de faire en sorte que ma plate-forme "MSYS2 appropriée" utilise le runtime MSYS2 de Git for Windows, en suivant ces instructions .
Répété ici pour la postérité:
Installer à l'intérieur de MSYS2 proprement dit
Ce guide suppose que vous souhaitez utiliser la version 64 bits de Git pour Windows.
Git pour Windows étant basé sur MSYS2, il est possible d’installer le package
git
dans une installation MSYS2 existante. Cela signifie que si vous utilisez déjà MSYS2 sur votre ordinateur, vous pouvez utiliser Git pour Windows sans exécuter le programme d'installation complet ni utiliser la version portable.Notez cependant qu'il y a quelques réserves pour aller de cette façon. Git pour Windows a créé des correctifs pour
msys2-runtime
qui n'ont pas été envoyés en amont. (Cela avait été planifié, mais cela a été déterminé dans le problème # 284 que cela ne se produirait probablement pas.) Cela signifie que vous devez installer Git pour Windows personnalisémsys2-runtime
pour disposer d'unegit
entièrement fonctionnelle dans MSYS2.Voici les étapes à suivre:
- Ouvrez un terminal MSYS2.
Editez
/etc/pacman.conf
et juste avant le[mingw32]
(ligne n ° 71 sur ma machine), ajoutez le référentiel de packagesgit-for-windows
:[git-for-windows] Server = https://wingit.blob.core.windows.net/x86-64
et éventuellement aussi le référentiel MINGW uniquement pour l'architecture opposée (c'est-à-dire MINGW32 pour SDK 64 bits):
[git-for-windows-mingw32] Server = https://wingit.blob.core.windows.net/i686
Autoriser la clé de signature (il peut être nécessaire de répéter cette étape de temps en temps jusqu'à ce que https://github.com/msys2/msys2/issues/62 soit corrigé)
curl -L https://raw.githubusercontent.com/git-for-windows/build-extra/master/git-for-windows-keyring/git-for-windows.gpg | pacman-key --add - && pacman-key --lsign-key 1A9F3986
Puis synchronisez le nouveau référentiel
pacboy update
Ceci met à jour
msys2-runtime
et vous demandera donc de fermer la fenêtre (not quittez le processus pacman). Ne paniquez pas, fermez simplement tous les shells MSYS2 et programmes MSYS2 actuellement ouverts. Une fois que tous sont fermés, redémarrez un nouveau terminal.Puis synchronisez encore (mettant à jour la partie non centrale des paquets):
pacboy update
Et enfin, installez les paquets Git/cURL:
pacboy sync git:x git-doc-html:x git-doc-man:x git-extra: curl:x
Enfin, vérifiez que tout s'est bien passé en effectuant
git --version
dans un shell MINGW64 et que celui-ci devrait générer quelque chose commegit version 2.14.1.windows.1
(ou plus récent).
Remarque: J'ai trouvé que le paquet git-extra
installé à l'étape 7 était assez intrusif (il ajoute un message "Bienvenue dans le kit de développement Git pour Windows!" À chaque terminal que vous ouvrez) le avec pacman -R git-extra
.
Note 2: J'ai également constaté que le runtime MSYS2 de Git for Windows s'ouvre dans un répertoire de départ différent de celui de MSYS2. Cela signifie également qu'il lit dans le mauvais profil bash. J'ai résolu ce problème en ajoutant une variable d'environnement à Windows dans le Panneau de configuration: HOME=/C/msys64/home/myusername
Ceci est probablement dû à un problème avec votre console qui n’envoie pas la commande avec précision au processus. C'est assez courant, surtout lorsque vous utilisez des consoles tierces telles que cmdr/conemu.
La solution?
Appuyez simplement sur ctrl + c plusieurs fois jusqu'à sa fermeture: P
Parfois, le processus de nœud se bloque. Recherchez l'ID de processus à l'aide de ps
. Vous souhaiterez peut-être grep pour un noeud, puis tuer le processus à l'aide de kill -9 [PID]
Utilisez Ctrl + C, puis entrez:> pm2 tout arrêter
Cela arrêtera tous les serveurs ou lorsque vous obtiendrez une pile avec nodejs.
J'ai pu résoudre ce problème en vérifiant les ports à l'aide de TCP View et en réalisant que mon serveur de nœud était en cours d'exécution même si j'avais appuyé sur ctrl-C pour l'arrêter. Je suggère de tuer entièrement le terminal sur lequel vous exécutez le noeud.