用途:在 JavaScript/Web 应用中实现运行时错误追踪、性能监控和用户问题检测,便于发现并定位生产环境问题。资料给出的触发场景包括:添加错误处理、实现性能监控、设置错误上报、创建用户反馈机制、调试生产问题。
主要能力:
- 全局错误捕获:通过 window.onerror 捕获未处理异常,通过 window.onunhandledrejection 捕获未处理的 Promise 拒绝,收集消息、来源、行号、列号、堆栈、时间戳、URL 和 User-Agent。
- 错误上报:reportError 将错误加入队列并做防抖,flushErrors 使用 navigator.sendBeacon('/api/errors', ...) 发送,失败时回退到 fetch(keepalive: true),并在失败时重新入队;在 beforeunload 时刷新。
- 组件错误边界:自定义元素 error-boundary 捕获子组件错误,展示 slot="fallback" 回退内容或内置提示,并提供重试。
- try/catch 模式:withErrorHandling 包装异步函数并附带上下文;safeJsonParse 安全解析 JSON。
- 性能监控:perf.start/end/time 使用 performance.mark 与 measure 计时,超过 1000ms 的慢操作会上报。
- Web Vitals:用 PerformanceObserver 采集 LCP、FID,并累计 CLS 后在页面隐藏时上报。
- 网络韧性:fetchWithRetry 支持重试次数、超时、指数退避,默认对 500/502/503/504 重试;networkStatus 监听 online/offline 事件。
- 用户反馈:feedback-reporter 自定义元素提供反馈对话框,收集描述、URL、时间、User-Agent、视口尺寸,可选截图(依赖 html2canvas),并附带最近错误。
- 初始化:initObservability 示例在非 localhost 环境注册全局处理器并启用性能监控。
使用方式:将上述代码片段引入页面早期(如在 head 或 body 前部),按需注册全局错误处理器、组件错误边界、性能与 Web Vitals 监控、网络重试及反馈组件;上报后端路径示例为 /api/errors、/api/performance、/api/feedback,需自行提供对应接口。
适用场景:需要改善前端稳定性与可观测性的 Web 项目,尤其是排错、性能优化和收集用户反馈时。
限制:截图的 captureScreenshot 需依赖 html2canvas,未提供则返回 null;console.error/warn 拦截被建议谨慎使用,可能影响调试体验;资料未说明任何具体收费、价格、平台要求、兼容版本或第三方服务信息,暂未提供。