我已经安装了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,是否会不可避免地导致无法加载脚本?知道这些不是我的代码中的实际错误,仅忽略这些内容是否合适?还是有什么办法可以防止脚本加载时出现此错误,但它的依赖项不存在?
谢谢!
答案 0 :(得分:0)
不幸的是,由于Internet和最终用户设备的不可预测性,这些加载失败是不可避免的。诸如网络中断,服务回收或设备电源之类的小事情,都可能导致浏览器放弃请求,并使您的页面处于不良状态。
I did a conference talk on debugging with this as one of my examples.我大约在33:30讨论。
您应该防御性地构建代码。如果您的脚本依赖于从单独请求中加载的内容,请在使用前始终检查其是否存在。甚至可能会有某种后备行为,例如向用户显示错误消息,记录事件或重新加载页面。
我致力于一项名为TrackJS的服务,该服务试图通过关注用户的影响来帮助您确定重要的问题,从而解决这些问题。这些错误大多数都可以安全地忽略,但您需要确保已设置适当的后备。