javascript - 表达 next() 头错误

标签 javascript node.js express error-handling

在一条 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/

相关文章:

javascript - 获取TR的索引

javascript - 使用 await 调用/申请/绑定(bind)

node.js - 套接字重新连接问题

node.js - Node 邮件程序错误

javascript - 由于浏览历史设置,angularjs http.get 调用未在 ie10 中触发

javascript - jQuery - 名称属性中的方括号出错

javascript - 数据属性返回未定义

javascript - 快速 route 的动态路径

Node .js : redirecting urls from http to https working well with all my urls except one

mysql - Nodejs : Post method url body parser shows undefined