真实js错误率需精准计算:分母用document.readystate==='complete'后埋点的pv,分子合并onerror、unhandledrejection、document.error三源去重计数,并修复cors缺失导致的“script error.”,同时过滤爬虫和无效会话。

前端错误率监控不能只靠 window.onerror,它漏掉的错误比捕获到的还多——Promise 拒绝、资源加载失败、跨域脚本错误、异步回调错误全都不报。直接上线单点监听等于裸奔。
怎么算出真实的 JS 错误率
错误率 = (上报的 JS 错误数 / 页面 PV 数)× 100%,但关键在分子分母都得准:
- 分母 PV 必须是「用户真实打开页面」的行为,不能用 SPA 路由跳转次数替代;推荐在
document.readyState === 'complete'后埋点,或监听load事件 - 分子要合并所有错误源:
window.onerror+window.addEventListener('unhandledrejection')+document.addEventListener('error', ..., true),三者去重后计数(按error.stack或e.reason?.stack做哈希判重) - 避免重复上报:同一错误在单页内多次触发(如滚动中反复加载失败),需加 5 秒防抖或按错误指纹限频
为什么跨域脚本错误总是显示 Script error.
这是浏览器安全策略导致的堆栈丢失,不是你代码写错了。只要满足任一条件,window.onerror 就只能拿到模糊信息:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
-
<script></script>标签没加crossorigin属性 - 服务端响应头没返回
Access-Control-Allow-Origin(哪怕只是*) - 本地用
file://协议打开,crossorigin直接失效(必须起本地 HTTP 服务)
修复方式就一条:CDN 或静态资源服务器配好 CORS 头,并在 HTML 中显式写 <script src="xxx.js" crossorigin></script>。
如何避免错误率被无效请求拉高
大量爬虫、插件注入、恶意刷量会污染错误率数据,必须过滤:
- 排除已知爬虫 UA:含
HeadlessChrome、PhantomJS、bot、crawler的请求头 - 过滤无交互的“秒开秒关”页面:停留时间 click/
scroll/input行为的 PV 不计入分母 - 屏蔽低版本 IE(如 IE10 及以下):它们的错误行为不可控,单独统计,不参与主错误率计算
- 对重复错误做聚合:同一 URL + 同一错误类型 + 同一行号,在 1 分钟内只计 1 次
真正难的不是采集,是区分哪些错误该告警、哪些该忽略。比如 ResizeObserver loop completed 在 Chrome 中高频出现但不影响功能,而 Cannot read property 'xxx' of null 出现在核心业务链路里就必须立刻响应——错误率数字背后,永远得有人定义业务上下文。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










