1

我已经安装了 BugSnag 来监控前端的 JavaScript 错误。我注意到一小部分用户(不到 1%)收到错误消息,例如:

  • jQuery is not defined
  • Bootstrap's JavaScript requires jQuery
  • number_format is not defined

...等等。使用标准脚本标签将脚本加载到我的模板中:

<script src="/vendor/jquery.js"></script>
<script src="/vendor/bootstrap.min.js"></script>
<script src="js/misc.js"></script>
<!-- Page-specific scripts here, typically relying on the above scripts -->

在所有这些情况下,我加载了多个脚本,这取决于之前加载的脚本。例如,number_format在 中定义misc.js,然后在发生错误的页面特定脚本中使用。或者首先加载 jQuery,然后由第二个加载的 Bootstrap 使用。

某些脚本似乎无法为某些用户加载,但下一个脚本正在成功加载以发现其依赖项丢失。

我的问题是:这种类型的加载脚本失败是否不可避免,是由特定用户的网络故障引起的?知道这不是我的代码的实际错误而简单地忽略这些是否合适?或者当脚本加载但它的依赖没有时,我可以做些什么来防止这个错误?

谢谢!

4

1 回答 1

0

不幸的是,由于 Internet 和最终用户设备的不可预测性,这些加载失败是不可避免的。一些小事情,例如网络中断、服务回收或设备电源都可能导致浏览器放弃请求并使您的页面处于不良状态。

我做了一个关于调试的会议,以此作为我的例子之一。我在 33:30 左右讨论这个问题。

你应该防御性地构建你的代码。如果您的脚本依赖于从单独请求加载的内容,请始终在使用之前检查它是否存在。甚至可能有某种回退行为,例如向用户显示错误消息、记录事件或重新加载页面。

我在一个名为TrackJS的服务上工作,它试图通过关注用户影响来解决这些问题,以帮助您决定什么是重要的。这些错误中的大多数都可以安全地忽略,但您需要确保有适当的后备措施。

于 2019-08-29T21:00:58.533 回答