【问题标题】:ReactJS - Freeze/Hangs in safari on mac and iOS onlyReactJS - 仅在 Mac 和 iOS 上的 Safari 中冻结/挂起
【发布时间】:2020-08-04 04:29:06
【问题描述】:

我们有一个 reactJs 应用程序,它可以在除 macOS 和 ios 上的 safari 之外的所有其他浏览器上正常运行。该应用程序也可以在 macOS 或 windows 和 ios 上的 Chrome 上完美运行。

此外,一旦应用程序冻结,我们将无法在 Safari 中打开开发控制台,如果它已打开,大多数操作都无法正常运行,例如暂停脚本执行。我们可以从活动监视器中说,当该页面的 cpu 使用率达到 100% 时,它进入了无限循环,但我无法弄清楚,因为根本没有错误,它可以在其他浏览器上运行。

它只是在加载时冻结并且完全没有响应(没有滚动或点击等)。看起来有一些无限循环或依赖问题。 webapp 是一种 LMS 并且有许多依赖项,但这里给你一个想法是堆栈 -

  • GraphQL
  • React Router Dom
  • 反应钩子
  • 日志记录哨兵
  • 插座 等等

如果您有任何问题,请随时提出。 这是网站 - https://i3.stage.cudy.co/

谢谢

【问题讨论】:

  • 只是一个想法。您是否尝试在加载页面之前打开开发工具并放置很多debugger“断点以查看它的反应?
  • 是的,我在加载页面之前确实打开了 devtools。我没有添加调试器,但我会试试看。感谢@Apostolos 的建议
  • 它在 MacOS safari 中打开得很好(虽然有点慢!)。无法重现该问题。
  • 您是在本地、在现场还是在两者都遇到这种情况?
  • 我也可以在 safari 中打开它,但刷新后它会出现在白屏上。

标签: reactjs google-chrome debugging safari mobile-safari


【解决方案1】:

我开始尝试看看发生了什么,我注意到了三件事:

  1. 前几次我试图打开您的网站,但正如您所说,它冻结了。甚至无法打开开发工具。

  2. 在之前的尝试之后,我突然看到你的菜单选项(浏览导师、作业、提要等)的图标出现了,一切都“正常”并且不再冻结。

但是,我确实注意到开发工具中有很多错误。其中大多数与不允许访问的 url 有关,而其他一些则由于 /profiles 试图访问某种 API。

  1. 您的 *.js 中有很多未处理的 Promise 拒绝错误,因此也可能需要查看。

我建议首先解决跨域源策略,然后添加逻辑来处理您错过的承诺拒绝,因为有时这些未处理的场景会使应用程序处于黑暗状态,不知道该做什么,并且可能会中断您的逻辑过程因此呈现冻结的网站。

最后但同样重要的是,this is a good way 追查问题。

【讨论】:

    【解决方案2】:

    涉及的因素太多,我们无法在不查看代码的情况下为您提供帮助。

    我会推荐以下内容:

    • 查看代码历史记录并针对每个主要版本更改进行测试,以便排除任何罪魁祸首或怀疑。
    • 我会一一断开任何包。
    • 断开 API 的连接,看看是否是服务器问题,您无限地请求 API 调用或类似的傻事。
    • 如果断开 API 有效,那么您就知道该去哪里了。

    干杯

    【讨论】:

      猜你喜欢
      • 2011-06-24
      • 1970-01-01
      • 2017-09-03
      • 2011-07-24
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      相关资源
      最近更新 更多