Ich habe eine node.js + Express + Express-Lenker-App. Ich möchte die Benutzer auf 404-Seite umleiten, wenn sie zu einer Seite gehen, die nicht existiert, und sie auf eine 500 umleiten, wenn es einen internen Serverfehler oder eine Ausnahme gibt (ohne den Server anzuhalten). In meiner app.js habe ich am Ende die Middleware geschrieben, um diese Aufgaben zu erledigen.Handhabung 404, 500 und Ausnahmen in Node.js und Express
app.get('*', function(req, res, next) {
var err = new Error();
err.status = 404;
next();
});
//Handle 404
app.use(function(err, req, res, next){
res.sendStatus(404);
res.render('404');
return;
});
//Handle 500
app.use(function(err, req, res, next){
res.sendStatus(500);
res.render('500');
});
//send the user to 500 page without shutting down the server
process.on('uncaughtException', function (err) {
console.log('-------------------------- Caught exception: ' + err);
app.use(function(err, req, res, next){
res.render('500');
});
});
Allerdings funktioniert nur der Code für 404. Also, wenn ich versuche, zu einer URL zu gehen
es leitet mich erfolgreich auf meine 404-Seite. Der 505 funktioniert nicht. Und für die Ausnahmebehandlung läuft der Server weiter, aber er leitet mich nicht zur 500-Fehler-Seite nach der console.log
Ich bin verwirrt von so vielen Lösungen online, wo Menschen verschiedene Techniken dafür zu implementieren scheinen.
Hier sind einige der Ressourcen, die ich bei
http://www.hacksparrow.com/express-js-custom-error-pages-404-and-500.html
Correct way to handle 404 and 500 errors in express
How to redirect 404 errors to a page in ExpressJS?
https://github.com/expressjs/express/blob/master/examples/error-pages/index.js
var profile = require ('./ routes/profile); app.use ('/ profie', Profil); Auf diese Weise definiere ich alle meine Routen. – codeinprogress
Das ist in Ordnung - diese Routen sollten vor der 404-Route und den Fehlerrouten eingerichtet werden - im Wesentlichen, wo die Routen von/und/users oben eingerichtet sind. Die Reihenfolge der Routen ist entscheidend – bryanmac
Das ist genau das, was das obige Beispiel macht. Es lädt Benutzerfunktionen, indem es Benutzer erfordert und richtet/Benutzer route ein, indem es Benutzer übergibt. * Dann * fügt es die 404-Wildcard-Route nach dem Einrichten aller Routen, dann endlich den Fehler 500 Route – bryanmac