经常会遇到有用户反应分享功能分享没得到返利,xxx登录失败,这种莫名其妙的错误。明明上线之前内部做了多种测试。这种软错误是最难修改的。所以就引入了鹅厂的badjs。
具体服务端安装过程就不过多讨论了。
根据文档,引入后初始化即可使用。因为badjs重写了window.onerror的方法。
JavaScript
BJ_REPORT.init({id: 1})
但是在vue-cli下。在vue内的错误或者警告都是以try的形式抛出,也就是并不会从onerror这个方法经过。
由于开发过多的是使用组件,第一反应就是看下badjs-report的git是否有人抛出这个问题,并被官方回答。结果没有!!!!
在我束手无策的时候,突然想起很早刚接触vue的时候,似乎看过vue存在自己的全局抛出异常。这里大家都懂了吧,查看文档!!!!!!
就是它了,满怀兴奋的写上去,然后运行,构建。没有反应!!
JavaScript
Vue.config.errorHandler = (error, vm, i) => {
BJ_REPORT.report(error);
console.error(msg);
};
官方文档错了吗?
在仔细看下,就是这个。
JavaScript
Vue.config.warnHandler = function (msg, vm, trace) {
BJ_REPORT.report({
msg: `warm:${msg}`,
target: Object.keys(vm.$refs).join(','),
});
console.warn(msg);
};
查看后台!!!没错服务器收到错误了。
但是值得注意的是这个警告在正式环境下是没用的,所以真正的错误会出现在errorHandler
经过优化和调整,最终代码如下
JavaScript
import BJ_REPORT from 'badjs-report';
import Vue from 'vue';
BJ_REPORT.init({
id: 1,
url: "http://xxxx5:8060/badjs",
repeat: 1,
random: .7,
});
Vue.config.errorHandler = (error, vm, i) => {
BJ_REPORT.report(error);
console.error(error);
};
Vue.config.warnHandler = (msg, vm, trace) => {
BJ_REPORT.report({
msg: `warm:${msg}`,
target: Object.keys(vm.$refs) + '',
});
console.warn(msg);
};
发布于 2024-07-20 16:19:50 回复
发布于 2024-07-20 16:20:37 回复
发布于 2024-08-16 19:31:30 回复
发布于 2024-08-17 15:57:54 回复