微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

发生事件时发送服务器响应,但这会导致无法修改标头,标头已发送错误 要修复此错误传递,将 res 作为 humanPlay 的参数并从播放路径中删除事件侦听器

如何解决发生事件时发送服务器响应,但这会导致无法修改标头,标头已发送错误 要修复此错误传递,将 res 作为 humanPlay 的参数并从播放路径中删除事件侦听器

在我的项目中,用户向这条路线发出请求,发生了一些复杂的逻辑,当发生移动事件时,应用程序会向用户发送响应。 代码工作正常,响应发送给用户,但应用程序拒绝退出路由处理程序,这使得服务器在我尝试访问路由时崩溃并显示错误消息(无法修改标头,标头已发送)再次

这是我的代码

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。