From 107d9d6e814abd53ec50dddc85d0a0b59cff34f8 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Tue, 31 Dec 2019 18:24:33 +0800 Subject: [PATCH] refactor: errorHandler #1093 --- lib/h5/main.js | 4 ---- packages/uni-app-plus/dist/index.v3.js | 19 +++++++++++++----- .../packages/mp-vue/dist/mp.runtime.esm.js | 20 ++++++++++++------- src/core/vue.js | 15 +++++++++++++- 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/lib/h5/main.js b/lib/h5/main.js index 6ed4beb67..6c844a43a 100644 --- a/lib/h5/main.js +++ b/lib/h5/main.js @@ -47,10 +47,6 @@ Vue.use(require('uni-view/plugins').default, { routes: __uniRoutes }) -Vue.config.errorHandler = function (err, vm, info) { - UniServiceJSBridge.emit('onError', err) -} - initVue(Vue) require('uni-platform/components') require('uni-components') diff --git a/packages/uni-app-plus/dist/index.v3.js b/packages/uni-app-plus/dist/index.v3.js index cbb9bfea2..cb4c00c72 100644 --- a/packages/uni-app-plus/dist/index.v3.js +++ b/packages/uni-app-plus/dist/index.v3.js @@ -12155,9 +12155,22 @@ var serviceContext = (function () { 'uni-web-view' ]; + function hasLifecycleHook (vueOptions = {}, hook) { + return Array.isArray(vueOptions[hook]) && vueOptions[hook].length + } + // 使用白名单过滤(前期有一批自定义组件使用了 uni-) - function initVue (Vue) { + function initVue (Vue) { + Vue.config.errorHandler = function (err) { + const app = getApp(); + if (app && hasLifecycleHook(app.$options, 'onError')) { + app.__call_hook('onError', err); + } else { + console.error(err); + } + }; + const oldIsReservedTag = Vue.config.isReservedTag; Vue.config.isReservedTag = function (tag) { @@ -12768,10 +12781,6 @@ var serviceContext = (function () { return key } - function hasLifecycleHook (vueOptions = {}, hook) { - return Array.isArray(vueOptions[hook]) && vueOptions[hook].length - } - /* @flow */ const LIFECYCLE_HOOKS = [ diff --git a/packages/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js b/packages/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js index 69ebf44f2..a1e787656 100644 --- a/packages/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js +++ b/packages/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js @@ -5808,8 +5808,14 @@ function getTarget(obj, path) { function internalMixin(Vue) { - Vue.config.errorHandler = function(err) { - console.error(err); + Vue.config.errorHandler = function(err) { + /* eslint-disable no-undef */ + var app = getApp(); + if (app && app.onError) { + app.onError(err); + } else { + console.error(err); + } }; var oldEmit = Vue.prototype.$emit; @@ -5832,14 +5838,14 @@ function internalMixin(Vue) { if (this.$scope && this.$scope[method]) { return this.$scope[method](args) } - // mp-alipay - if(typeof my === 'undefined'){ - return + // mp-alipay + if (typeof my === 'undefined') { + return } - if (method === 'createSelectorQuery') { + if (method === 'createSelectorQuery') { /* eslint-disable no-undef */ return my.createSelectorQuery(args) - } else if (method === 'createIntersectionObserver') { + } else if (method === 'createIntersectionObserver') { /* eslint-disable no-undef */ return my.createIntersectionObserver(args) } diff --git a/src/core/vue.js b/src/core/vue.js index 85b7303af..1a3b37f20 100644 --- a/src/core/vue.js +++ b/src/core/vue.js @@ -1,7 +1,20 @@ // 使用白名单过滤(前期有一批自定义组件使用了 uni-) import tags from 'uni-helpers/tags' -export default function initVue (Vue) { +import { + hasLifecycleHook +} from 'uni-helpers/index' + +export default function initVue (Vue) { + Vue.config.errorHandler = function (err) { + const app = getApp() + if (app && hasLifecycleHook(app.$options, 'onError')) { + app.__call_hook('onError', err) + } else { + console.error(err) + } + } + const oldIsReservedTag = Vue.config.isReservedTag Vue.config.isReservedTag = function (tag) { -- GitLab