admin管理员组文章数量:1415698
I have a Node.js app that uses Express.js to listen for connections. The code is something like so:
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.");
I'd like to implement a way to restart the server without having to restart the whole app. However, I can't seem to properly shut down the server and free the port. Here's what I tried:
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.");
As soon as I run this, I get
Error: listen EADDRINUSE :::9001
What would be the correct way to do this?
Cheers.
I have a Node.js app that uses Express.js to listen for connections. The code is something like so:
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.");
I'd like to implement a way to restart the server without having to restart the whole app. However, I can't seem to properly shut down the server and free the port. Here's what I tried:
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.");
As soon as I run this, I get
Error: listen EADDRINUSE :::9001
What would be the correct way to do this?
Cheers.
Share Improve this question asked Feb 5, 2018 at 17:19 OpaliumOpalium 1411 gold badge2 silver badges6 bronze badges2 Answers
Reset to default 2server.close()
is asynchronous and takes a callback. Try waiting until the server is actually closed before starting a new one:
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.");
});
As of Express 3, the app.close()
method seems to have disappeared, which means Express users have no means of gracefully stopping an application. Express is really a listener to http request events which means you can do this:
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.");
For more on this you can refer hardening nodejs for production
本文标签: javascriptRestart an Expressjs server with the same portStack Overflow
版权声明:本文标题:javascript - Restart an Express.js server with the same port - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745237862a2649143.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论