From: AlanYu <35493996+smallnine9@users.noreply.github.com> Date: Tue, 19 Dec 2023 08:59:47 +0000 (+0800) Subject: feat(runtime-core): throw real error when scheduler detects infinite loop during... X-Git-Tag: v3.4.0-beta.4~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1d79b64ebce884d97136d71aa722347470b13e35;p=thirdparty%2Fvuejs%2Fcore.git feat(runtime-core): throw real error when scheduler detects infinite loop during dev (#7447) close #7437 --- diff --git a/packages/runtime-core/src/scheduler.ts b/packages/runtime-core/src/scheduler.ts index 5b096b563e..0b31758106 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 {