http_outgoing.js:561 throw new ERR_HTTP_HEADERS_SENT(‘set‘); ^Error [ERR_HTTP_HEADERS_SENT

文章讨论了在Node.js中,由于多次调用res.json导致的HTTP协议冲突问题,强调了确保只发送一次响应的重要性,并给出了在遇到错误时如何正确返回错误响应的建议。
摘要由CSDN通过智能技术生成

报错如下:

错误原因:

由于编程错误或逻辑错误引起的。在发送响应之前,调用了多次 res.json()方法。

由于 HTTP 协议规定每个请求只能有一个响应,因此重复发送响应或在响应头已经被发送后尝试发送响应将导致错误。

这时需要对代码进行适当的重构,以确保只发送一次响应,并在响应头被发送后停止发送任何响应。另外,如果出现错误,应该立即停止处理,并向客户端发送错误响应,而不是继续处理请求。可以使用 return 或 next() 方法来退出当前函数并防止继续执行处理程序。

只要在res.json()等返回的前面加上 return就可以了

之前还以为 res.json就是返回了

// getList农场
router.get('/getFarmList', (req, res) => {
    const connection = getConnection()
    const sqlQuery = `select * from farm`
    connection.query(sqlQuery, (error, results) => {
        if (error) return console.log('查询发生错误')
        if (results.length === 0) {
            return res.status(500).json({ message: '农场租赁为空' })
        }
        return res.status(200).json(results)
    })

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值