我一直有这个错误
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:533:11)
在我在 socket.io 中添加更新 firebase 代码之后
io.on('connection', socket => {
...
socket.once('myEvent', async (dataToSend) => {
try {
await db
.collection('myCollection')
.doc('myDoc')
.update({keyToUpdate: dataToSend})
} catch (err) {
console.log(err)
}
}
}
我认为问题出在套接字上,所以我做了相同的逻辑,但是在套接字外部使用了 POST 路由,并得到了同样的错误,我尝试添加一个返回但没有成功
我怀疑这可能是因为这个函数是一个 promise 而我没有很好地处理异步行为,或者因为 socket.io 使服务器充当流,而这个 firebase 函数不喜欢那样。
我在代码中还有其他 firebase 函数,但它们是获取请求(.onSnapshot())错误仅发生在数据添加 firebase 函数(.set()、.add()、.update())
在这里希望得到一些帮助,谢谢。
最佳答案
已修复,不完全知道 onSnapshot 是如何工作的,所以每次更新时都会触发其回调,发送信息并触发错误。
更改为 .get().then() 并修复了它
关于node.js - 将数据添加到 firebase 时,无法在将 header 发送到客户端后设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68242632/