// 收集vue的异常数据 function formatComponentName(vm: any) { try { if (vm.$root === vm) return "root"; const name = vm._isVue ? (vm.$options && vm.$options.name) || (vm.$options && vm.$options._componentTag) : vm.name; return ( (name ? "component <" + name + ">" : "anonymous component") + (vm._isVue && vm.$options && vm.$options.__file ? " at " + (vm.$options && vm.$options.__file) : "") ); } catch (error) { // 无需出错处理 } } const VueDebugHandler = function(Vue: any) { const oldFn = Vue.config.errorHandler; Vue.config.errorHandler = function(err:any, vm:any, info:any) { try { if (vm) { var componentName = formatComponentName(vm); var propsData = vm.$options && vm.$options.propsData; const metaData = { componentName: componentName, propsData: propsData, info: info }; (window as any).innertEvent.trigger('errorJs', { errorMsg: err.name + ": " + err.message + '; metaData=' + JSON.stringify(metaData), errorObj: err.stack }); } else { (window as any).innertEvent.trigger('errorJs', { errorMsg: err.message, errorObj: err.stack }); } } catch (error) { // 无需出错处理 } oldFn && oldFn(err, vm, info); }; } export default VueDebugHandler