Javascript 使用相同的端口重新启动Express.js服务器
我有一个Node.js应用程序,它使用Express.js侦听连接。代码是这样的:Javascript 使用相同的端口重新启动Express.js服务器,javascript,node.js,express,Javascript,Node.js,Express,我有一个Node.js应用程序,它使用Express.js侦听连接。代码是这样的: const express = require("express"); var server = express(); server.get("/test", (req, res) => testResponse(req, res)); server.listen(9001); console.info("Server is listening to port 9001."); 我想实现一种方法来重新启动
const express = require("express");
var server = express();
server.get("/test", (req, res) => testResponse(req, res));
server.listen(9001);
console.info("Server is listening to port 9001.");
我想实现一种方法来重新启动服务器,而不必重新启动整个应用程序。但是,我似乎无法正确关闭服务器并释放端口。
以下是我尝试过的:
server.close();
console.info("Server closed. Restarting.");
var server = express();
server.get("/test", (req, res) => testResponse(req, res));
server.listen(9001);
console.info("Server is listening to port 9001.");
一旦我运行这个,我就会
错误:侦听EADDRINUSE::9001
正确的方法是什么
干杯。是异步的,接受回调。在启动新服务器之前,请尝试等待服务器实际关闭:
server.close(()=>{
console.info("Server closed. Restarting.");
var server = express();
server.get("/test", (req, res) => testResponse(req, res));
server.listen(9001);
console.info("Server is listening to port 9001.");
});
从Express 3开始,
app.close()
方法似乎已经消失,这意味着Express用户无法正常停止应用程序。Express实际上是http请求事件的侦听器,这意味着您可以执行以下操作:
const express = require("express");
var server = express();
server.get("/test", (req, res) => testResponse(req, res));
var app = server.listen(9001, function () {
console.log('Listening :)');
app.close(function () {
console.info("Server closed. Restarting.");
var server = express();
server.get("/test", (req, res) => testResponse(req, res));
server.listen(9001);
console.info("Server is listening to port 9001.");
});
});;
console.info("Server is listening to port 9001.");
有关这方面的更多信息,请参阅谢谢!然而,这带来了另一个问题:如果我想将此行为分为两个函数,该怎么办?一个用于关闭服务器的函数,另一个用于再次启动服务器?A.k.A.closeServer()和startServer(),您正在解释节点服务器的
server.close()
。对于express app,没有名为close的方法。在生产环境中使用此方法有任何注意事项吗?但仍然返回一个节点http.Server
instance.Yes。这就是使用http.server.close()停止服务器的方法。method@AyushGupta,有关与生产有关的资料,请参阅