我有一个node.js + Express + express-handlebars应用程序。当用户访问不存在的页面时,我想将其重定向到404页面,并在出现内部服务器错误或异常时将其重定向到500(而不停止服务器)。在我的app.js中,我编写了中间件来执行这些任务。请注意,中间件应该放在最后。
然而,只有404的代码有效。因此,如果我尝试访问一个url,它将不会起作用。
它成功地将我重定向到404页面。505无效。对于异常处理,服务器确实保持运行状态,但在console.log之后不会将我重定向到500错误页面。
我对在线上有这么多解决方案感到困惑,人们似乎采用不同的技术来解决这个问题。
以下是我查看过的一些资源。
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');
});
});
然而,只有404的代码有效。因此,如果我尝试访问一个url,它将不会起作用。
localhost:8000/fakepage
它成功地将我重定向到404页面。505无效。对于异常处理,服务器确实保持运行状态,但在console.log之后不会将我重定向到500错误页面。
我对在线上有这么多解决方案感到困惑,人们似乎采用不同的技术来解决这个问题。
以下是我查看过的一些资源。
http://www.hacksparrow.com/express-js-custom-error-pages-404-and-500.html
https://github.com/expressjs/express/blob/master/examples/error-pages/index.js