我们有一个Web应用程序,可以呈现HTML页面,并包含一些外部JavaScript文件,这些文件定义了jQuery
,$
,app
等变量。
我们在Bugsnag中跟踪客户端JavaScript错误,有时我们会收到Uncaught ReferenceError: $ is not defined
或ReferenceError: Can't find variable: app
等错误。
这背后可能是什么原因?我可以猜到的两个是:用户可能在浏览器中点击了“停止”并且JS文件没有完全加载但是页面内的内联JavaScript仍然执行(可能吗?),或者某些JavaScript文件被浏览器插件阻止/延期。
我们观察到它发生在所有主流浏览器(Firefox / Chrome / Safari等)中,但它的发生非常罕见 - 通常在数千个请求中出现一次。
以下是摘录自页面:
<script src="https://path/to/jquery.js"></script>
<script src="/path/to/app.js"></script>
<script type="text/javascript">
$(document).ready(function() { ... });
// ^^^^ I receive the error here
app.init(function() { ... });
// ^^^^ and sometimes I receive the error here
</script>
一个合理的解释是某些浏览器扩展阻止加载这些脚本(例如,广告拦截器)。