Express不会呈现错误

时间:2015-11-04 12:45:04

标签: node.js express

我有这个:

//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没有结果。 有什么问题?

1 个答案:

答案 0 :(得分:2)

您的错误处理中间件必须具有4;

app.use(function(err, req, res, next) { // this line
    res.status(err.status || 500);
    res.end('ERROR 404!');
});

Have a look at the docs:

  

错误处理中间件的arity为4,必须始终保持该标识为错误处理中间件。即使您不需要使用下一个对象,也要确保指定它来维护签名,否则它将被解释为常规中间件,并且无法处理错误。