Vue2如何挂载全局错误处理而非覆盖,实现错误上报至Sentry?
Vue2 挂载全局错误处理器而非覆盖的实现方法
直接覆盖Vue.config.errorHandler会替换掉Vue默认的错误控制台输出逻辑,想要同时保留原有行为和自定义监控上报,只需要先缓存原错误处理器,再在自定义逻辑中调用它即可。
修改你的插件代码如下:
const plugin: PluginObject<never> = { install(Vue: typeof _Vue): void { // 缓存Vue原有的全局错误处理器 const originalErrorHandler = Vue.config.errorHandler; Vue.config.errorHandler = (err, vm, info) => { // 执行你的Sentry上报逻辑 // my Sentry stuff // 调用原错误处理器,保留默认的控制台输出 if (originalErrorHandler) { originalErrorHandler(err, vm, info); } }; } };
这样修改后,当Vue捕获到全局错误时,会先执行你的监控上报逻辑,再触发原本的错误处理行为(包括控制台输出错误信息),实现了“挂载”而非“覆盖”的效果。
内容的提问来源于stack exchange,提问作者Febertson
相关产品推荐
相关产品推荐

