"NetworkError when attempting to fetch resource" 在 Firefox 84/85 中

"NetworkError when attempting to fetch resource" in Firefox 84/85

我们不久前推出了一个由 GQL 后端支持的 React 网站。就在最近从收集的客户端指标中,我们观察到在 84 和 85 版的 Firefox 浏览器中获取数据期间发生以下错误的频率很高(截至此问题发布时最新)。

NetworkError when attempting to fetch resource.

在 React 应用程序内部,Apollo GraphQL 客户端用于获取数据。整个 ApolloError 对象读起来像

{"graphQLErrors":[],"networkError":{},"message":"NetworkError when attempting to fetch resource."}

然而,当我们自己尝试提到的浏览器版本时,无法重现。

我已经确认这应该不是 CORS 问题。我们有相当大的用户群,他们使用的 Firefox 浏览器版本范围很广,但只有 84 和 85 版本显示出这种异常高的发生率。不久前,我们修复了一个 问题,该问题是由于旧版本浏览器与 Fetch api.

不兼容引起的

我们对可能导致问题的原因有点无能为力。客户端的日志记录量受到限制以显示更多信息。非常感谢任何见解或线索。

最终我发现这不是与 Firefox 84/85 相关的错误。正如 所解释的那样,提取 API 只会在其进程被浏览器中止时抛出网络错误消息(很可能是由于用户导航到其他页面或停止页面加载引起的)。

我已经在几个主流浏览器上验证了这一点,方法是在提取 API 正在进行时故意停止页面加载。我收到的错误消息是:

  • Chrome & 边缘 - Failed to fetch
  • Firefox - NetworkError when attempting to fetch resource
  • Safari - cancelled

不幸的是,只有 Safari 浏览器 returns 一条正确的消息可以解释可能发生的情况。

我认为通常可以安全地忽略这些错误,或者在它们是由连接问题引起的情况下通过重试尝试挽救。对于 Apollo GraphQL 客户端,更重要的是检查 ApolloError 对象的 graphQLErrorsnetworkError 属性,这表明客户端捕获了一些严重的问题。