Node JS ctrl C 不会停止服务器(在使用“npm start”启动服务器后)

新手上路,请多包涵

当我在命令行中使用 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 时,服务器不会停止(节点进程仍然保留在任务管理器中)。这意味着当我再次尝试执行 npm start 时出现错误,因为端口 3000 仍在使用中。

我正在关注 youtube 上的教程( 带时间戳的视频),当这个人 ctrl + C 然后再次运行 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...");
});

谢谢!

原文由 Mat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 601
2 个回答

Ctrl + C 不会终止服务器。该问题的解决方案是在 server.js 中使用以下代码片段:

 process.on('SIGINT', function() {
  console.log( "\nGracefully shutting down from SIGINT (Ctrl-C)" );
  // some other closing procedures go here
  process.exit(0);
});

这对我有用。

您还可以检查 Graceful shutdown in NodeJS 中提到的其他解决方案

原文由 Pankaj Shinde 发布,翻译遵循 CC BY-SA 4.0 许可协议

我在普通的 Windows cmd 上试过它,它应该在那里工作。看起来这是 git bash 的问题。

原文由 Mat 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题