jstracker: JavaScript stack trace
简介
通过对 error 的监听,获取异常的相关信息并添加这些信息到异常信息数组,在达到上限或者一定时间之后做处理(返回服务端保存数据之类)
功能
捕获页面 JavaScript 异常报错,捕获异常类型包含:
- JavaScript runtime 异常捕捉 √
- 静态资源 load faided 异常捕捉 √
- console.error 的异常捕获 √
- 记录静态资源加载时长
实现概述
-
通过对
window.onerror
进行监听,捕获 JavaScript 的运行时异常,记录错误:event + 错误来源(source) + 错误行数 + 错误列数等数据 -
通过对
window.addEventListener
监听error
事件类型,获取静态资源报错,包含 JavaScript 文件,CSS 文件,图片,视频,音频。 -
主要针对 vue 的异常捕获,重写了
console.error
事件,在捕获异常先记录错误信息的描述,再next
到原始的console.error
使用指南
Example
script mode
module mode
1.安装
npm install jstracker --save-dev
2.在文件中添加
jstracker
API
字段 | 描述 | 类型 | 默认值 | 备注 |
---|---|---|---|---|
concat | 是否延时处理,默认延时 2s 处理 | Boolean | true |
|
delay | 错误处理间隔时间,单位 ms | Number | 2000 |
当 concat 为 false 无效 |
maxError | 一次处理的异常报错数量限制 | Number | 16 |
当 concat 为 false 无效 |
sampling | 采样率 | Number | 1 |
0 - 1 之间 |
report | 错误报告函数 | Function | errorLogs => console.tabel(errorLogs) |
errorLogs 定义见下述说明 |
关于 errorLogs:
type: 1 // 参考错误类型 desc: '' // 错误描述信息 stack: 'no stack' // 堆栈信息。无堆栈信息时返回 'no stack' // ...
错误类型
var ERROR_RUNTIME = 1var ERROR_SCRIPT = 2var ERROR_STYLE = 3var ERROR_IMAGE = 4var ERROR_AUDIO = 5var ERROR_VIDEO = 6var ERROR_CONSOLE = 7var ERROR_TRY_CATCH = 8
try..catch 捕获
jstracker 暴露出一个 tryJS
对象,可以处理 try..catch 包裹等
将函数使用 try..catch 包装
; thishandleSelect = jstrackertryJS;
只包装参数
{ // ... } jstrackertryJS4 { a = b}
这时候只对参数进行 try..catch 包装
后续功能
记录性能数据,包含:
- 记录 pv 和 uv
- 记录页面加载时长
performance api 兼容性情况 (看到 no support 绝望,iOS不可用!)
Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
43.0 | yes | 41 | 10 | 33 | No support |