使用ExpressJS处理错误
我尝试使用ExpressJS处理503和500错误,但它只适用于404错误。
我的中间件:
var error = function(server) {
// 404
server.app.use(function(request, response) {
response.status(404);
response.redirect('/404');
});
// 500
server.app.use(function(error, request, response, next) {
response.status(500);
response.redirect('/500');
next(error);
});
// 503
server.app.use(function(error, request, response, next) {
response.status(503);
response.redirect('/503');
next(error);
});
};
module.exports = error;
我的控制器中的功能(使用路线):
function error500(request, response) {
response.render('0-templates/' + response.locals.options.template + '/500', {
_layoutFile: false,
error: //how to get the error ?
});
}
回答如下:
您缺少error
回调的404
参数,这导致表示相信它是一个中间件而不是错误处理程序,因此对于通过所述中间件的每个请求返回404。
您还应该将next
参数添加到所有错误处理程序。
来自express documentation on error handling:
以与其他中间件函数相同的方式定义错误处理中间件函数,除了错误处理函数有四个参数而不是三个:(err,req,res,next)。