我有这个:
//public source
app.use('/src', express.static(__dirname + '/../client/source'));
//Errors
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
app.use(function(err, req, res) {
res.status(err.status || 500);
res.end('ERROR 404!');
});
当服务器未找到文件时,会生成错误并分配状态404并将错误传输到下一个功能。然后是下一个函数渲染短语ERROR 404!
。但实际上这不起作用。在错误服务器上返回浏览器短语Error: Not found
和stacktrace,指向带有var err = new Error('Not Found');
的行。 res.end
没有结果。
有什么问题?
答案 0 :(得分:2)
您的错误处理中间件必须具有4;
app.use(function(err, req, res, next) { // this line
res.status(err.status || 500);
res.end('ERROR 404!');
});
错误处理中间件的arity为4,必须始终保持该标识为错误处理中间件。即使您不需要使用下一个对象,也要确保指定它来维护签名,否则它将被解释为常规中间件,并且无法处理错误。