XuqmGroup-Vue3SDK/src/bugcollect/crash-capture.ts
XuqmGroup f60fdcdd6f feat: 添加 Vue3 BugCollect 崩溃收集模块
新增模块:src/bugcollect/
- bugcollect.ts: 主入口,错误捕获 API
- crash-capture.ts: Web 端崩溃捕获(error + unhandledrejection)
- types.ts: 数据模型
- fingerprint.ts: 错误指纹计算(SHA-256)
- log-queue.ts: 内存队列 + 定时上传(localStorage 持久化)
- funnel-tracker.ts: 漏斗追踪

功能:
- captureError/captureCrash 捕获错误
- addBreadcrumb 添加面包屑
- event 记录自定义事件
- warn/info 日志级别记录
- 自动初始化(window error 事件捕获)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 12:32:54 +08:00

41 行
952 B
TypeScript

/**
* Web 端崩溃捕获器
*/
type ErrorHandler = (error: Error, tags?: Record<string, unknown>) => void
let _started = false
let _handler: ErrorHandler | null = null
/**
* 启动崩溃捕获
*/
export function startCrashCapture(handler: ErrorHandler): void {
if (_started) return
_started = true
_handler = handler
// 捕获未处理的错误
window.addEventListener('error', (event) => {
if (event.error) {
handler(event.error, { type: 'uncaught_error', filename: event.filename, lineno: event.lineno, colno: event.colno })
}
})
// 捕获未处理的 Promise rejection
window.addEventListener('unhandledrejection', (event) => {
const error = event.reason instanceof Error
? event.reason
: new Error(String(event.reason))
handler(error, { type: 'unhandled_rejection' })
})
}
/**
* 停止崩溃捕获
*/
export function stopCrashCapture(): void {
_started = false
_handler = null
}