问题描述
在我的项目中,用户向这条路线发出请求,发生了一些复杂的逻辑,当发生移动事件时,应用程序会向用户发送响应。 代码工作正常,响应发送给用户,但应用程序拒绝退出路由处理程序,这使得服务器在我尝试访问路由时崩溃并显示错误消息(无法修改标头,标头已发送)再次
这是我的代码
app.post('/api/play',(req,res) =>{
gameStart.humanPlay(req.body)
gameStart.on("move-made",(moves) => {
res.send(moves)
})
})
解决方法
每次客户端向播放路由发送 post 请求时,将事件侦听器放在播放路由中会创建多个事件侦听器,这会向客户端发送多个响应,这就是导致错误消息的原因(无法修改标头标头已经发送)。
要修复此错误传递,将 res 作为 humanPlay 的参数并从播放路径中删除事件侦听器
app.post('/api/play',(req,res) =>{
gameStart.humanPlay(req.body,res)
})
并从班级内部发送回复
res.send(this.moves)