From 1d79b64ebce884d97136d71aa722347470b13e35 Mon Sep 17 00:00:00 2001 From: AlanYu <35493996+smallnine9@users.noreply.github.com> Date: Tue, 19 Dec 2023 16:59:47 +0800 Subject: [PATCH] feat(runtime-core): throw real error when scheduler detects infinite loop during dev (#7447) close #7437 --- packages/runtime-core/src/scheduler.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/runtime-core/src/scheduler.ts b/packages/runtime-core/src/scheduler.ts index 5b096b563e4..0b317581063 100644 --- a/packages/runtime-core/src/scheduler.ts +++ b/packages/runtime-core/src/scheduler.ts @@ -1,7 +1,6 @@ -import { ErrorCodes, callWithErrorHandling } from './errorHandling' +import { ErrorCodes, callWithErrorHandling, handleError } from './errorHandling' import { Awaited, isArray, NOOP } from '@vue/shared' import { ComponentInternalInstance, getComponentName } from './component' -import { warn } from './warning' export interface SchedulerJob extends Function { id?: number @@ -271,14 +270,16 @@ function checkRecursiveUpdates(seen: CountMap, fn: SchedulerJob) { if (count > RECURSION_LIMIT) { const instance = fn.ownerInstance const componentName = instance && getComponentName(instance.type) - warn( + handleError( `Maximum recursive updates exceeded${ componentName ? ` in component <${componentName}>` : `` }. ` + `This means you have a reactive effect that is mutating its own ` + `dependencies and thus recursively triggering itself. Possible sources ` + `include component template, render function, updated hook or ` + - `watcher source function.` + `watcher source function.`, + null, + ErrorCodes.APP_ERROR_HANDLER ) return true } else {