提交 107d9d6e 编写于 作者: fxy060608's avatar fxy060608

refactor: errorHandler #1093

上级 12978acd
...@@ -47,10 +47,6 @@ Vue.use(require('uni-view/plugins').default, { ...@@ -47,10 +47,6 @@ Vue.use(require('uni-view/plugins').default, {
routes: __uniRoutes routes: __uniRoutes
}) })
Vue.config.errorHandler = function (err, vm, info) {
UniServiceJSBridge.emit('onError', err)
}
initVue(Vue) initVue(Vue)
require('uni-platform/components') require('uni-platform/components')
require('uni-components') require('uni-components')
...@@ -12155,9 +12155,22 @@ var serviceContext = (function () { ...@@ -12155,9 +12155,22 @@ var serviceContext = (function () {
'uni-web-view' 'uni-web-view'
]; ];
function hasLifecycleHook (vueOptions = {}, hook) {
return Array.isArray(vueOptions[hook]) && vueOptions[hook].length
}
// 使用白名单过滤(前期有一批自定义组件使用了 uni-) // 使用白名单过滤(前期有一批自定义组件使用了 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; const oldIsReservedTag = Vue.config.isReservedTag;
Vue.config.isReservedTag = function (tag) { Vue.config.isReservedTag = function (tag) {
...@@ -12768,10 +12781,6 @@ var serviceContext = (function () { ...@@ -12768,10 +12781,6 @@ var serviceContext = (function () {
return key return key
} }
function hasLifecycleHook (vueOptions = {}, hook) {
return Array.isArray(vueOptions[hook]) && vueOptions[hook].length
}
/* @flow */ /* @flow */
const LIFECYCLE_HOOKS = [ const LIFECYCLE_HOOKS = [
......
...@@ -5808,8 +5808,14 @@ function getTarget(obj, path) { ...@@ -5808,8 +5808,14 @@ function getTarget(obj, path) {
function internalMixin(Vue) { function internalMixin(Vue) {
Vue.config.errorHandler = function(err) { Vue.config.errorHandler = function(err) {
console.error(err); /* eslint-disable no-undef */
var app = getApp();
if (app && app.onError) {
app.onError(err);
} else {
console.error(err);
}
}; };
var oldEmit = Vue.prototype.$emit; var oldEmit = Vue.prototype.$emit;
...@@ -5832,14 +5838,14 @@ function internalMixin(Vue) { ...@@ -5832,14 +5838,14 @@ function internalMixin(Vue) {
if (this.$scope && this.$scope[method]) { if (this.$scope && this.$scope[method]) {
return this.$scope[method](args) return this.$scope[method](args)
} }
// mp-alipay // mp-alipay
if(typeof my === 'undefined'){ if (typeof my === 'undefined') {
return return
} }
if (method === 'createSelectorQuery') { if (method === 'createSelectorQuery') {
/* eslint-disable no-undef */ /* eslint-disable no-undef */
return my.createSelectorQuery(args) return my.createSelectorQuery(args)
} else if (method === 'createIntersectionObserver') { } else if (method === 'createIntersectionObserver') {
/* eslint-disable no-undef */ /* eslint-disable no-undef */
return my.createIntersectionObserver(args) return my.createIntersectionObserver(args)
} }
......
// 使用白名单过滤(前期有一批自定义组件使用了 uni-) // 使用白名单过滤(前期有一批自定义组件使用了 uni-)
import tags from 'uni-helpers/tags' 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 const oldIsReservedTag = Vue.config.isReservedTag
Vue.config.isReservedTag = function (tag) { Vue.config.isReservedTag = function (tag) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册