在一条路线中我有这个:
if (elements.length <= 0) {
var msg = 'no elements found';
console.error(msg);
var err = new Error('Not found');
err.status = 404;
err.message = msg;
next(err);
}
console.log('Found ' + elements.length + ' elements');
res.setHeader('Content-Type', 'application/json'); /*error*/
res.status(200).json(elements);
res.end();
app.js中最后定义的错误处理程序:
// development error handler
app.use(function(err, req, res, next) {
res.type('application/json');
res.status(err.status || 500);
res.json({
message: err.message,
error: err
});
});
我看到错误在json中作为响应发送。 但是我在标有/ 错误 /:
的行上收到此错误发送后无法设置标头。
为什么表达式从错误处理程序返回? 我可以看到它继续执行路由(来自console.log) 为什么要继续执行该路线?
答案 0 :(得分:2)
内部if
声明正确:
return next(err);