From f20e456d7203cd98409e4b64aa0b09e3e233bee8 Mon Sep 17 00:00:00 2001 From: DCloud_LXH <283700113@qq.com> Date: Mon, 26 Sep 2022 14:37:28 +0800 Subject: [PATCH] fix(nvue): support App onError #3851 --- packages/uni-shared/src/onCreateVueApp.ts | 13 +++++++++++++ packages/uni-vue/src/index.ts | 10 +++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/uni-shared/src/onCreateVueApp.ts b/packages/uni-shared/src/onCreateVueApp.ts index ecff98edd..26641a22d 100644 --- a/packages/uni-shared/src/onCreateVueApp.ts +++ b/packages/uni-shared/src/onCreateVueApp.ts @@ -1,4 +1,6 @@ import type { App } from 'vue' +import { isFunction } from '@vue/shared' +import { once } from './utils' type CreateVueAppHook = (app: App) => void let vueApp: App @@ -18,3 +20,14 @@ export function invokeCreateVueAppHook(app: App) { vueApp = app createVueAppHooks.forEach((hook) => hook(app)) } + +export const invokeCreateErrorHandler = once( + ( + app: App, + createErrorHandler: (app: App) => App['config']['errorHandler'] + ) => { + if (isFunction((app._component as any).onError)) { + return createErrorHandler(app) + } + } +) diff --git a/packages/uni-vue/src/index.ts b/packages/uni-vue/src/index.ts index b41fb4955..af697c1ae 100644 --- a/packages/uni-vue/src/index.ts +++ b/packages/uni-vue/src/index.ts @@ -1,7 +1,9 @@ import { App } from 'vue' -import { isFunction } from '@vue/shared' -import { invokeCreateVueAppHook } from '@dcloudio/uni-shared' +import { + invokeCreateVueAppHook, + invokeCreateErrorHandler, +} from '@dcloudio/uni-shared' import { applyOptions } from './componentOptions' import { set } from './componentInstance' @@ -10,10 +12,8 @@ import { uniIdMixin } from './uni-id-mixin' export function initApp(app: App) { const appConfig = app._context.config - if (isFunction((app._component as any).onError)) { - appConfig.errorHandler = createErrorHandler(app) - } + appConfig.errorHandler = invokeCreateErrorHandler(app, createErrorHandler) initOptionMergeStrategies(appConfig.optionMergeStrategies) const globalProperties = appConfig.globalProperties -- GitLab