`页面正在卸载`错误

IT技术 javascript node.js reactjs routing
2021-05-22 23:00:52

我正在使用 NodeJS-ReactJS 同构应用程序,当我点击 a 时,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错误的手段?它如何可能导致浏览器不需要导航。

截屏

3个回答

你的错误是

Uncaught (in promise) Error: Request has been terminated

当Promise中的请求在解决或拒绝之前终止时会导致此错误。如果 ( 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,因为单击 aLink以导航到组件时会出现错误请检查正在使用Link.

编辑: 如果您查看错误消息屏幕截图,它清楚地表明错误发生在第 1 行。node_modules/superagent/lib/client.js.Request.crossDomainError 中 PromiseRequest 处的 app.js 的 73194。因此,您的错误的原因是 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">

您似乎尚未在节点服务器中启用 cors。建议步骤:

  • npm 安装 cors

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

.

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