节点的JS ctrl + C不停止服务器(启动服务器后“npm开始”)

当我在命令行中使用node app.js启动我的服务器(使用Git Bash)时,我可以使用ctrl + C来停止它。

在我的package.json文件中,我得到了这个启动脚本,它允许我使用命令npm start来启动服务器:

 "scripts": { "start": "node app" }, 

当我这样做时,服务器正常启动:

 $ npm start > nodekb@1.0.0 start C:\Projects\nodekb > node app.js Server started on port 3000... 

但是当我ctrl + C现在,服务器不会停止(节点进程仍然在任务pipe理器中)。 这意味着当我尝试再次npm start ,出现错误,因为端口3000仍在使用中。

我在YouTube上跟随一个教程( 带有时间戳的video ),当这个人按Ctrl + C,然后运行npm start再次npm start ,它正常工作。

任何想法为什么我的服务器进程不停止,当我使用CTRL + C?

我的app.js文件,如果需要的话:

 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..."); }); 

谢谢!

我试了一下正常的Windows CMD,它的工作原理应该在那里。 看起来这是git bash的问题。

这很可能只是您的控制台没有准确地将命令发送到进程的问题。 这是很常见的,特别是使用第三方控制台如cmdr / conemu时。

解决scheme?

只需按Ctrl + C几次,直到它closures:P

有时节点进程挂起。 使用ps检查进程ID您可能需要grep for节点,然后使用kill -9 [PID]kill -9 [PID]进程。

我在Windows机器上使用git bash,并在上个月左右遇到了这个问题。

我仍然不知道是什么原因造成的,但我find了另一种方法来阻止它。

  1. 打开任务pipe理器
  2. 进入“ 进程”选项卡
  3. findnode.exe ,然后按结束进程

这使我能够迅速停止服务器。