Ein paar Tipps:
1) Ihr Code nicht funktioniert Da Ihre Fehlerbehandler-Middleware vor dem Erreichen Ihrer Route ausgeführt wurde, hatte der Fehlerhandler nie die Möglichkeit, dass der Fehler an ihn weitergegeben wurde. Dieser Stil wird als Fortsetzungsübergabe bezeichnet. Setzen Sie Ihren Error-Handler zuletzt in den Middleware-Stack.
2) Sie sollten den Server herunterfahren, wenn Sie einen unbehandelten Fehler haben. Der beste Weg, dies zu tun ist server.close()
zu nennen, in dem Server ist das Ergebnis der var server = http.createServer(app);
tun, was bedeutet, sollten Sie etwas tun:
var server = http.createServer(app);
app.use(function(err, req, res, next) {
console.log("error!!!");
res.send("error!!!");
server.close();
});
Sie sollten wahrscheinlich auch Zeit, um die server.close(), falls es kann nicht abgeschlossen werden (die App ist in einem undefinierten Zustand, nachdem alle):
var server = http.createServer(app);
app.use(function(err, req, res, next) {
console.log("error!!!");
res.send("error!!!");
server.close();
setTimeout(function() {
process.exit(1);
}, 3*1000);
});
ich eine Bibliothek gemacht, dass all dies für Sie tut, und lässt definieren Sie benutzerdefinierte Antworten, einschließlich spezialisierter Fehleransichten, statische Dateien zu bedienen, etc ...:
https://github.com/ericelliott/express-error-handler
Für Menschen aus der Zukunft ist app.router für die 3.x => 4.x Migration veraltet; siehe https://github.com/strongloop/express/wiki/Migrating-from-3.x-to-4.x. –