当我在命令行中使用 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 许可协议
Ctrl + C 不会终止服务器。该问题的解决方案是在 server.js 中使用以下代码片段:
这对我有用。
您还可以检查 Graceful shutdown in NodeJS 中提到的其他解决方案