在一条 route 我有这个:
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 中作为响应发送。 但是我在标有/error/:
的行上收到此错误Can't set headers after they are sent.
为什么 express 从错误处理程序返回? 我可以看到它正在继续执行路由(来自 console.log) 为什么它继续执行路由?
最佳答案
在 if
语句中正确:
return next(err);
关于javascript - 表达 next() 头错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31183008/