Necesito cerrar el servidor después de recibir la devolución de llamada de la /auth/github/callback
URL. Con el servidor de cierre HTTP API habitual, actualmente se admite la server.close([callback])
función API, pero con el servidor node-express obtengo un TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'close'
error. Y no sé cómo encontrar información para resolver este problema.
¿Cómo debo cerrar el servidor express?
Notas de configuración de NodeJS:
$ node --version
v0.8.17
$ npm --version
1.2.0
$ npm view express version
3.0.6
Código de aplicación real:
var app = express();
// configure Express
app.configure(function() {
// … configuration
});
app.get(
'/auth/github/callback',
passport.authenticate('github', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
setTimeout(function () {
app.close();
// TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'close'
}, 3000)
}
);
app.listen('http://localhost:5000/');
Además, he encontrado 'nodejs expresan cerca ...' pero yo no estoy seguro si lo puedo usar con el código que tengo: var app = express();
.
app
lugar deserver
. Salvó mi día. Muchas gracias 👍En express v3 eliminaron esta función.
Aún puede lograr lo mismo asignando el resultado de la
app.listen()
función y aplicándolo cerca:var server = app.listen(3000); server.close()
https://github.com/visionmedia/express/issues/1366
fuente
Si ocurre algún error en su aplicación express, entonces debe cerrar el servidor y puede hacerlo como se muestra a continuación:
var app = express(); var server = app.listen(process.env.PORT || 5000)
Si ocurre algún error, nuestra aplicación obtendrá una señal llamada
SIGTERM
Puede leer más sobre la señal del nodo aquí-
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.'); }); });
fuente
He respondido una variación de "cómo terminar un servidor HTTP" muchas veces en diferentes node.jscanales de soporte. Desafortunadamente, no pude recomendar ninguna de las bibliotecas existentes porque faltan de una manera u otra. Desde entonces, armé un paquete que (creo) está manejando todos los casos que se esperan de la terminación elegante del servidor HTTP (S) express.js.
https://github.com/gajus/http-terminator
El principal beneficio de http-terminator es que:
fuente