前段时间作项目的时候,发布功能的时候,本地是好的,测试是好的,正式也是好的,可是客户打开正式的时候白屏了,把软件删除了,从新打开了又好了,可是不能老是让用户去删除软件又从新下。因此弄了一个简单的前段监控。前端
window提供了一个监听页面错误的方法,具体代码以下react
window.onerror = (errorMessage, scriptURI, lineNo, columnNo, error) => { sendError({ errorMessage, scriptURI, lineNo, columnNo, error,hash:location.href}); //发送ajax };
还能够根据需求添加更多信息,好比当前时间,浏览器版本,电脑类型(window or mac) 浏览器类型(谷歌 ie 之类),还能够记录是pc或者移动端,移动端又能够增长手机类型,手机网络,来排查问题是出自哪里。webpack
前端报错有可能会一直报错,而后一直在发送请求给后端,而后就会浪费大量带宽,因此咱们能够先放在本地,而后页面注销的时候把以前收集的消息所有一次性发送给后端,具体代码以下:git
window.onerror = function(errorMessage, scriptURI, lineNo, columnNo, error) { console.log('errorMessage: ' + errorMessage); // 异常信息 console.log('scriptURI: ' + scriptURI); // 异常文件路径 console.log('lineNo: ' + lineNo); // 异常行号 console.log('columnNo: ' + columnNo); // 异常列号 console.log('error: ' + error); // 异常堆栈信息 let errorInfo = { errorMessage, scriptURI, lineNo, columnNo, error, time: new Date(), }; if (localStorage.getItem('errorLog')) { //检查本地是否有错误日志 let errorLog = JSON.parse(localStorage.getItem('errorLog')); errorLog.push(errorInfo); } else { localStorage.setItem('errorLog', JSON.stringify([errorInfo])); } }; window.addEventListener( //在页面注销时候检查是否有错误日志,若是有上传 'unload', () => { if (localStorage.getItem('errorLog')) { // localStorage.removeItem('errorLog') //ajax 上传 } }, false );
这样一个监控页面错误日志的功能就起来了,代码地址es6