JavaScript错误监视显示未加载各种脚本。这是不可避免的吗?

时间:2019-03-02 21:00:40

标签: javascript debugging bugsnag

我已经安装了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使用。

似乎某些脚本无法为某些用户加载,但是下一个脚本已成功加载以查找缺少的依赖项。

我的问题是这样的:由于特定用户的网络打something,是否会不可避免地导致无法加载脚本?知道这些不是我的代码中的实际错误,仅忽略这些内容是否合适?还是有什么办法可以防止脚本加载时出现此错误,但它的依赖项不存在?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

I did a conference talk on debugging with this as one of my examples.我大约在33:30讨论。

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

我致力于一项名为TrackJS的服务,该服务试图通过关注用户的影响来帮助您确定重要的问题,从而解决这些问题。这些错误大多数都可以安全地忽略,但您需要确保已设置适当的后备。