Ich muss den Server schließen, nachdem ich einen Rückruf von der /auth/github/callback
URL erhalten habe. Mit der üblichen HTTP-API wird das Schließen des Servers derzeit mit der server.close([callback])
API-Funktion unterstützt, aber mit dem Node-Express-Server wird eine TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'close'
Fehlermeldung angezeigt. Und ich weiß nicht, wie ich Informationen finden kann, um dieses Problem zu lösen.
Wie soll ich den Express-Server schließen?
Hinweise zur NodeJS-Konfiguration:
$ node --version
v0.8.17
$ npm --version
1.2.0
$ npm view express version
3.0.6
Aktueller Anwendungscode:
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/');
Ich habe auch 'nodejs express close ...' gefunden , bin mir aber nicht sicher, ob ich es mit Code verwenden kann, den ich habe : var app = express();
.
app
stattdessen angerufenserver
. Hat meinen Tag gerettet. Vielen Dank 👍In Express v3 haben sie diese Funktion entfernt.
Sie können dasselbe immer noch erreichen, indem Sie das Ergebnis der
app.listen()
Funktion zuweisen und es in der Nähe anwenden:var server = app.listen(3000); server.close()
https://github.com/visionmedia/express/issues/1366
quelle
Wenn in Ihrer Express-App ein Fehler auftritt, müssen Sie den Server schließen und können dies wie folgt tun:
var app = express(); var server = app.listen(process.env.PORT || 5000)
Wenn ein Fehler auftritt, erhält unsere Anwendung ein Signal mit dem Namen
SIGTERM
Weitere Informationen zum Knotensignal finden Sie hier.
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.'); }); });
quelle
Ich habe eine Variation von "Wie man einen HTTP-Server beendet" viele Male auf verschiedenen beantwortet node.jsUnterstützungskanäle. Leider konnte ich keine der vorhandenen Bibliotheken empfehlen, da sie auf die eine oder andere Weise fehlen . Ich habe seitdem ein Paket zusammengestellt, das (glaube ich) alle Fälle behandelt, die von einer ordnungsgemäßen Beendigung des HTTP (S) -Servers von express.j erwartet werden.
https://github.com/gajus/http-terminator
Der Hauptvorteil von http-terminator ist, dass:
quelle