为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梵蒂冈之花 2019-04-21 20:15:15
暂时没找到问题的所在。app.post('/chart',function(req,res){varSQL='xxxxxxx';connection.query(SQL,function(err,rows){res.send(rows);})})如果这样写的话会报错:Can'tsetheadersaftertheyaresent;如果是写成:app.post('/chart',function(req,res){varSQL='xxxxxxxxxx';connection.query(SQL,function(err),rows){xxxxxxx};res.send({status:0});})这样是不会报错的。--前面的代码都没返回数据给前台的。
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

Can'tsetheadersaftertheyaresent;出现这个错误就表示。你在一个已经关闭的连接上又做一些写操作。无论是res.json()还是res.send()底层代码都是用res.end()结束。也就是说如果你res.json()后又有出现了res.xxxx()的操作就会报上面的那个错误
你上面第一个例子报错是因为你在response调用end()后又出现了res的读写操作
                            
查看完整回答
反对 回复 2019-04-21
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

因为在connection.query未结束的时候调用了res的方法,也就是一个请求还没得到回应的时候你又发了一个消息头(请求),所以报错
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 426 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号