效果整理预览
在app.js中使用onError监听错误,通过请求传给后端存起来,就这么简单~
onError: function (err) {
// 上报错误
this.post("client_err/err_save", {
name: err.split(' at ')[0], //错误名
err_msg: JSON.stringify(err), //完整报错内容
device_info: JSON.stringify(wx.getDeviceInfo()), //存储报错的设备信息
cur_pages: JSON.stringify(getCurrentPages().map(item => ({options: item.options, route: item.route}))) //存储报错时的页面路由及相应的参数
});
},
后台整理预览部分代码
const deviceObj = {
deviceAbi: '设备二进制接口类型',
benchmarkLevel: '设备性能等级',
brand: '设备品牌',
model: '设备型号',
system: '操作系统及版本',
memorySize: '设备内存大小/MB',
platform: '客户端平台',
cpuType: '设备 CPU 型号',
osName: '系统名称',
osVersion: '操作系统版本',
}
const list = list.map(item => {
item.device_info = typeof(item.device_info) == "string" && item.device_info != '' ? JSON.parse(item.device_info) : item.device_info;
item.cur_pages = typeof(item.cur_pages) == "string" && item.cur_pages != '' ? JSON.parse(item.cur_pages) : item.cur_pages;
item.err_msg = typeof(item.err_msg) == "string" && item.err_msg != '' ? JSON.parse(item.err_msg).split('\n') : item.err_msg.split('\n');
item.name = item.name.split('\n');
return {...item}
});
// 显示设备信息的时候用deviceObj[name]就可以转中文啦
注
存储的页面仅是tab页之后的页面,仅用于帮助定位报错页面,不能定位到具体代码行。实际还是需要自己排查。
如果需要定位到具体位置,可能需要使用We分析下载错误报告进行定位(这里不多提及。大家可以百度)。