关于Error: Can't set headers after they are sent.

首先,这个问题查看了Stackoverflow上的所有解释,还是没有找到合适的解决办法,都试了一遍,加断点Debug也找不出来

问题描述:

  • 现在注释了路由中除去获取index的路由响应外的所有路由,排除问题出现以下特征

  • 第一次打开了浏览器获取页面不会出现报错,但是当在此刷新就会出现题目中的错误,不明白为什么

  • 有一个Ajax请求获取数据,打开浏览器页面点击发送请求,第一次不会出现重复响应,第二次再点击时加断点发现会出现重复响应,它在接收到Ajax请求时,会查询数据库进行正确的操作,但是在一切结束后,它不会返回,而是又进行了一次一一模一样的操作,但是由于之前的操作已经更新了数据库,所以返回的已经不再是期待中的结果,为什么说重复响应?因为请求URL加了随机数,打印发现两次随机数一模一样,排除Ajax重复发送的可能,最奇怪的一点是当我第一次点击之后如果等待五六分钟再点击是正常的,不会重复响应,但是如果立即点击或等待一两分钟操作还是会重复请求

以上所有问题描述的错误均排除

  • 1.数据库缓存或数据库更新慢

  • 2.AJax重复发送请求

  • 3.Ajax从缓存中读取,因为已经禁用了缓存

  • 4.以及任何可能的偶然因素

附上此部分代码链接,还望大牛帮忙看看,自己琢磨了两天了,这个BUG还是解决不掉,主要问题可能出在posts.js中

    https://github.com/ZJH9Rondo/Blog-Node/tree/master/routes
阅读 1.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题