发生事件时发送服务器响应,但这会导致(无法修改 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)