前端错误上报系统需全面捕获JavaScript错误、Promise异常、资源加载失败及框架级错误,通过异步非阻塞方式上报,优先使用sendBeacon保障卸载时数据发送,失败则本地缓存重试;采集上下文信息时兼顾隐私保护,过滤敏感数据并支持用户授权标识,结合错误分类打标提升可分析性;系统设计轻量独立,避免依赖主应用,支持远程开关与服务端高可用,确保稳定可靠运行。

前端错误上报系统是保障线上应用稳定性的重要手段。一个高可用的上报系统不仅要能准确捕获错误,还要在各种极端情况下(如网络异常、页面崩溃)依然可靠运行。核心在于全面捕获、低侵入、异步上报、容错处理和数据去重。
1. 全面捕获各类前端错误
确保所有可能的错误类型都能被监听到,是系统可用性的基础。需覆盖以下几类:
- JavaScript 运行时错误:通过 window.onerror 捕获同步错误,注意跨域脚本需设置 crossorigin 并配置 CORS 才能获取详细信息。
- Promise 异常:使用 window.addEventListener('unhandledrejection') 监听未处理的 Promise 错误。
- 资源加载失败:通过 addEventListener('error') 监听 script、img、link 等资源加载异常,注意需在捕获阶段监听以避免冒泡限制。
- Vue/React 等框架错误:利用框架提供的错误钩子,如 Vue 的 app.config.errorHandler 或 React 的 Error Boundary。
- 自定义业务异常:提供统一的 logError() 方法供业务代码主动上报。
2. 异步非阻塞上报与失败重试
上报行为不能影响主业务流程,必须异步且具备容错能力。
- 使用 navigator.sendBeacon 上报,该方法在页面卸载时仍能发送数据,适合 unload 场景下的错误上报。
- 常规场景可使用 fetch 发送,但要设置超时控制,避免请求堆积。
- 上报失败时,将错误暂存到 localStorage,下次页面加载时尝试重发,限制重试次数防止无限循环。
- 控制上报频率,对相同错误做去重或采样,避免日志风暴。
3. 上下文信息采集与用户隐私保护
仅有错误堆栈难以定位问题,需补充上下文,同时注意合规。
一个经过完善设计的经典网上购物系统,适用于各种服务器环境的高效网上购物系统解决方案,shopxp购物系统Html版是我们首次推出的免费购物系统源码,完整可用。我们的系统是免费的不需要购买,该系统经过全面测试完整可用,如果碰到问题,先检查一下本地的配置或到官方网站提交问题求助。 网站管理地址:http://你的网址/admin/login.asp 用户名:admin 密 码:admin 提示:如果您
立即学习“前端免费学习笔记(深入)”;
- 收集必要信息:URL、userAgent、设备类型、网络状态、页面性能指标(如 FP、FCP)、用户操作链路(可选)。
- 敏感信息过滤:自动脱敏手机号、身份证、token 等字段,禁止上报 cookie 或 localStorage 全量内容。
- 支持用户标识:可上报匿名 UID 或登录 ID,便于关联用户行为,但需用户授权。
- 错误分类打标:根据错误类型、模块、版本等维度标记,方便后续分析。
4. 容灾与轻量化设计
系统自身不能成为故障源,需最小化依赖。
- 上报 SDK 应独立打包,避免与主应用共用构建产物,防止自身出错导致业务异常。
- 代码体积尽量小,关键路径避免复杂计算或 DOM 操作。
- 支持动态开关:可通过远程配置关闭上报,便于紧急降级。
- 服务端接收接口要高可用,具备限流、鉴权、数据校验能力。
基本上就这些。关键是让上报机制稳定、安静地运行在背后,既能兜住问题,又不添乱。









