发生事件时发送服务器响应,但这会导致(无法修改 headers、headers 已发送)错误
Sending server response when an events occurs but this cause a (cannot modify headers, headers have already been sent) error
在我的项目中,用户向这条路线发出请求,发生了一些复杂的逻辑,当 move-made 事件发生时,应用程序向用户发送响应。
代码工作正常响应发送给用户,但应用程序拒绝退出路由处理程序,这使服务器崩溃并显示错误消息(无法修改 headers,headers 已发送) 当我再次尝试访问该路线时
这是我的代码
app.post('/api/play', (req, res) =>{
gameStart.humanPlay(req.body)
gameStart.on("move-made", (moves) => {
res.send(moves)
})
})
每次客户端向播放路由发送 post 请求时,将事件监听器放在播放路由中会创建多个事件监听器,这会向客户端发送多个响应,这就是导致错误消息的原因(不能修改 headers headers 已发送)。
要修复此错误传递,将 res 作为 humanPlay 的参数并从您的播放路径中删除事件侦听器
app.post('/api/play', (req, res) =>{
gameStart.humanPlay(req.body, res)
})
并从 class
中发送响应
res.send(this.moves)
在我的项目中,用户向这条路线发出请求,发生了一些复杂的逻辑,当 move-made 事件发生时,应用程序向用户发送响应。 代码工作正常响应发送给用户,但应用程序拒绝退出路由处理程序,这使服务器崩溃并显示错误消息(无法修改 headers,headers 已发送) 当我再次尝试访问该路线时
这是我的代码
app.post('/api/play', (req, res) =>{
gameStart.humanPlay(req.body)
gameStart.on("move-made", (moves) => {
res.send(moves)
})
})
每次客户端向播放路由发送 post 请求时,将事件监听器放在播放路由中会创建多个事件监听器,这会向客户端发送多个响应,这就是导致错误消息的原因(不能修改 headers headers 已发送)。
要修复此错误传递,将 res 作为 humanPlay 的参数并从您的播放路径中删除事件侦听器
app.post('/api/play', (req, res) =>{
gameStart.humanPlay(req.body, res)
})
并从 class
中发送响应res.send(this.moves)