首页 > 异步处理导致的Can\'t set headers after they are sent??

异步处理导致的Can\'t set headers after they are sent??

暂时没找到问题的所在。

    app.post('/chart', function(req, res){
                var SQL = 'xxxxxxx';
                connection.query(SQL, function(err, rows){
                    res.send(rows);
                })
        })
    

如果这样写的话会报错: Can't set headers after they are sent;

如果是写成 :

app.post('/chart', function(req, res){
    var SQL = 'xxxxxxxxxx';
    connection.query(SQL, function(err), rows){
            xxxxxxx
    };
    res.send({status:  0 });
})

这样是不会报错的。- -

前面的代码都没返回数据给前台的。


因为在connection.query未结束的时候调用了res的方法,也就是一个请求还没得到回应的时候你又发了一个消息头(请求),所以报错


Can't set headers after they are sent;
出现这个错误就表示。你在一个已经关闭的连接上又做一些写操作。
无论是res.json() 还是 res.send()
底层代码都是用res.end()结束。
也就是说如果你 res.json()后 又有出现了 res.xxxx()的操作
就会报上面的那个错误

你上面第一个例子报错是因为你在response调用end()后又出现了res的读写操作

【热门文章】
【热门文章】