表示next()标题错误

时间:2015-07-02 11:13:16

标签: javascript node.js express error-handling

在一条路线中我有这个:

            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) 为什么要继续执行该路线?

1 个答案:

答案 0 :(得分:2)

内部if声明正确:

return next(err);