how to properly close node-express server? how to properly close node-express server? express express

how to properly close node-express server?


app.listen() returns http.Server. You should invoke close() on that instance and not on app instance.

Ex.

app.get(    '/auth/github/callback',    passport.authenticate('github', { failureRedirect: '/login' }),    function(req, res) {        res.redirect('/');        setTimeout(function () {            server.close();            // ^^^^^^^^^^^        }, 3000)    });var server = app.listen('http://localhost:5000/');

You can inspect sources: /node_modules/express/lib/application.js


In express v3 they removed this function.

You can still achieve the same by assigning the result of app.listen() function and apply close on it:

var server = app.listen(3000);server.close()

https://github.com/visionmedia/express/issues/1366


If any error occurs in your express app then you must have to close the server and you can do that like below-

var app = express();var server = app.listen(process.env.PORT || 5000)

If any error occurs then our application will get a signal named SIGTERM. You can read more SIGTERM here - https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

process.on('SIGTERM', () => {  console.info('SIGTERM signal received.');  console.log('Closing http server.');  server.close(() => {    console.log('Http server closed.');  });});