【前端】诸葛io收集前端js报错信息
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/zhuge_error.html
一、什么是诸葛io
诸葛io就是通过分析用户的操作事件对用户数据,行为路径等进行分析的一个数据分析工具。
可以看一下官方的demo,https://demo.zhugeio.com/apppanel/panel.jsp?app_id=35510
二、诸葛io怎么用
首先需要进行初始化,非常简单,先注册登录创建一个app,然后找到下面这段js,把它添加到项目的base.js或者common.js文件里,保证每个页面都可以用到。

诸葛只有track和identify两个常用方法,
track方法就是触发事件,它有3个参数,第一个参数的事件名,第二个参数是事件属性,第三个参数是回调函数,例如
zhuge.track('购买手机', {
'手机' : '小米4',
'价格' : 1799,
'运营商' : '移动'
}, function(){
console.info('发送事件成功')
);
identify方法是让用户“登录”到诸葛,这样就可以把这个用户所有的事件绑定在用户身上了,事件不再是独立的。它也有2个参数,第一个是用户id(也可以是用户的其他唯一标识),第二个是用户的属性,第三个参数是回调函数,例如
zhuge.identify('0202033', {
name: '张三',
//预定义属性
gender: '男',
//预定义属性
'行业': '互联网' //自定义属性
},
function() {
location.href = 'http://www.xxx.com/index.html'; //执行用户标识成功后的代码,比如跳转页面
});
identify事件只用调用一次就好了,不必每个页面都调用。
三、用诸葛io收集js报错
我们通过上面第二部分的内容知道了诸葛有个track方法,可以收集事件,我们就用它来收集我们的js报错事件。
window有个方法onerror,默认是null,如果页面有js报错就会触发它(必须不是trycatch里的,也不能被框架拦截掉)
它有6个参数,分别是errorMsg-简单的报错信息, errorFile-报错的文件, errorLine-报错在哪一行, errorColumn-报错在哪一列, errorData-报错的完整信息
然后我们重写这个方法就好了
window.onerror = function(errorMsg, errorFile, errorLine, errorColumn, errorData){
try{
errorData = errorData || {};
errorFile = errorFile || "";
track("代码异常", {
errorMsg: errorMsg,
errorFile: errorFile.split("?version")[0], //因为js文件加了版本号,所以需要去掉
errorLine: errorLine,
errorData: errorData.stack //errorData里的stack才是详细报错信息
});
}catch(e){}
}
然后就ok了,部署上线坐等代码报错(好像哪里不对)
这里一定要加trycatch,否则onerror里再报错就不好了
如果用了什么框架,这个onerror可能不会执行,可以修改框架源码报错的处理方法。
四、必要性
就是做上面这些是否真的有必要。
好吧,我以前对自己的代码非常自信,我觉得报错不大可能,因为每个页面的功能都正常,怎么可能报错,但现实是。。。


14号上线,15号一天接近4500个报错,十几种报错类型。。。。
完结,散花
【前端】诸葛io收集前端js报错信息的更多相关文章
- IE8.0.6001这个版本执行JS报错
现场: OS winserver 2008 IE8.0.6001.18702 JS报错,不能登陆 OS XP IE8.0.6001.18702CO JS报错,不能登陆 公司测试: ...
- Vue.js报错Failed to resolve filter问题原因
Vue.js报错Failed to resolve filter问题原因 金刚 vue Vue.js js javascript 之前使用vue.js写分页功能时,写了一个过滤器,发现一个比较奇怪的错 ...
- 解决MyEclipse中的js报错的小方法
今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...
- selenium执行js报错
selenium执行js报错 Traceback (most recent call last): dr.execute_script(js) File "C:\Python27\l ...
- MyEclipse的JQuery.min.js报错红叉解决办法
MyEclipse的JQuery.min.js报错红叉解决办法 1.选中报错的jquery文件"jquery-1.2.6.min.js".2.右键选择 MyEclipse--> ...
- MyEclipse忽略js报错
MyEclipse对官网下载的js报错,解决办法如下: 1. 对js文件右键选择 MyEclipse --> Exclude From Validation 2. 然后继续右键执行MyEclip ...
- Eclipse和MyEclipse使用技巧--解决MyEclipse中的js报错的小方法
今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...
- 不知道哪里alert undefined 用下面的语句是js报错.F12能提示报错的地方window.alert=function(aa){ if (typeof (aa)"undefined"){ throw "就是这";}};
不知道哪里alert undefined 用下面的语句是js报错.F12能提示报错的地方 var oldalert=window.alert; window.alert=function(aa){ i ...
- Eclipse js报错问题解决办法
最近在Eclipse中导入新项目后会发现js报错,但是不影响程序的运行,但是对于程序员的我们来说多少还是比较在意代码前面的红色的X的,有木有??? 上网也查了很多方法,对于其中一种方法表示不能完全解决 ...
随机推荐
- win10 store 无法连接网络
当你试过所有的解决攻略 都无效时,那么使用这个教程 关闭以下的蓝色框里的
- JVM的内存分区
JVM的内存分区 这篇文章尝试讨论清楚JVM的内存分区情况. 1. JVM的内存和系统内存的关系 下图是对系统内存及JVM内存的大致描绘 对大多数操作系统,内存可以分为物理内存RAM及Sw ...
- Codeforce C. Bus
C. Bus time limit per test 2 seconds memory limit per test 256 megabytes input standard input output ...
- 我的java之路week2类的无参、带参方法
2.1语法 public 返回值类型 方法名(){ //方法体 } 2.2方法的调用语法 对象名.方法名 计算平均分和总成绩 public class Score { /** * 创建类 ScoreC ...
- Python随笔,day1
#python中不存在单个字符的运算,只有字符串函数 >>> s="www.google.com" >>> s 'www.google.com' ...
- git指令总结
在学习flask之前,先汇总一下Git的指令. mkdir filedir 创建文件夹filedir cd filedir 进入文件夹 pwd 显示当前工作目录 git init 初始化git仓库 g ...
- HDU [P1150] Machine Schedule
二分图匹配求最小点覆盖 把两个机器作为两个集合,把每个任务当做边建图.那么所求的就是二分图的最小点覆盖. 但是最开始WA了,原因在于,题目要求的是变换的次数,也就是与0连的边需要删去. #includ ...
- NOIP 2017 Day 0. 游记
刚从曲师大试机回来... 不巧,我抽到了和去年一样的考场,还是那么难用的XP,还是那么难用的键盘. 似乎在考场上有一股奇怪的力量,我本来在自己电脑上打板子打的没那么快,但是试机的那段时间..说出来你们 ...
- JavaScript中涉及得运算符以及运算符的优先级
在js中主要有三种运算符:算术运算符,逻辑与比较运算符,位运算符.在着三种运算符中,最常见的应该是算术与比较运算符,位运算符比较少见一些 *说到了运算符,就不得不说运算符的优先级.下面我来列一下这些运 ...
- 应用负载均衡之LVS(二):VS_TUN和VS_DR的arp问题
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...