【问题标题】:`the page is being unloaded` error`页面正在卸载`错误
【发布时间】:2018-03-25 08:47:00
【问题描述】:

我正在使用 NodeJS-ReactJS 同构应用程序,当我单击 Link 时,我收到一条错误消息

Uncaught (in promise) Error: Request has been terminated Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.

我听说的前两个原因(离线和 CORS)。 the page is being unloaded 错误是什么意思?它如何导致浏览器无法导航。

【问题讨论】:

  • 您的链接是否指向外部域?如果是这样,那么最好使用a 标签。
  • 我在Link组件中使用a标签。
  • 你为什么要那样做!一次使用其中任何一个。
  • 我不明白。它是一个反应组件。这就是组件的工作原理..!

标签: javascript node.js reactjs routing


【解决方案1】:

你的错误是

Uncaught (in promise) Error: Request has been terminated

当promise中的请求在resolve或reject之前被终止,就会导致这个错误。如果 (Possible causes)

  1. the network is offline :网络出现故障,与处理请求所使用的 url 的连接丢失。
  2. Origin is not allowed by Access-Control-Allow-Origin :由于缺少正确的 CORS 标头,请求被拒绝。
  3. the page is being unloaded : 发出请求的页面在请求完成之前关闭。

在上述原因中,与您的案例相关的最可能原因是 1 或 2,因为您在单击 Link 导航到组件时收到错误消息。请检查正在使用Link 加载的新组件发出的请求。

编辑: 如果您查看错误消息屏幕截图,它清楚地表明错误发生在第 1 行。 node_modules/superagent/lib/client.js.Request.crossDomainError 中 PromiseRequest 的 app.js 的 73194。因此,您的错误原因是上面第 2 条中描述的 CORS 错误。

【讨论】:

  • 谢谢。我的问题是第三个错误/原因是什么? the page is being unloaded 错误是什么意思? 请求在请求完成之前关闭。并不意味着页面被卸载。我说的对吗?
  • 如果发出请求的页面在请求完成之前关闭,这就是您将得到的错误。当页面关闭时,它会触发 beforeunloadunload 事件,让服务知道请求可以终止。
  • 哦..谢谢。但就我而言,我第二次尝试导航时仍然有效。 CORS 没问题。而且我现在在我的项目中看不到这个错误。
【解决方案2】:

因为Link组件使用Location.push做重定向,而Location.push方法不能重定向到另一个域。

所以我的解决方案是:

  1. 使用window.open('http://your.new.domain.com/index', '_self')
  2. 使用<a href="http://your.new.domain.com/index">

【讨论】:

    【解决方案3】:

    您的节点服务器中似乎没有启用 cors。 建议步骤:

    • npm install cors

    • 在 app.js(节点服务器)中使用它

    .

    var cors = require('cors');    
    var app = express();
    app.use(cors()); //Enable CORS
    

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2012-10-13
      • 1970-01-01
      相关资源
      最近更新 更多