From aa8dff80bad2ec153fbf05f0ab88b1987ec64bd4 Mon Sep 17 00:00:00 2001 From: arturovt Date: Mon, 24 Feb 2025 19:31:35 +0200 Subject: [PATCH] refactor(core): drop `getNgModuleDef` error message in production (#60082) Drops `getNgModuleDef` error message in production and replaces it with an error code. PR Close #60082 --- goldens/public-api/core/errors.api.md | 4 ++++ packages/core/src/errors.ts | 2 ++ packages/core/src/render3/def_getters.ts | 17 +++++++++++++---- .../bundling/router/bundle.golden_symbols.json | 2 +- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/goldens/public-api/core/errors.api.md b/goldens/public-api/core/errors.api.md index 9832a074115..bdd5d1f0ced 100644 --- a/goldens/public-api/core/errors.api.md +++ b/goldens/public-api/core/errors.api.md @@ -89,6 +89,8 @@ export const enum RuntimeErrorCode { // (undocumented) MISCONFIGURED_INCREMENTAL_HYDRATION = 508, // (undocumented) + MISSING_DIRECTIVE_DEFINITION = 916, + // (undocumented) MISSING_DOCUMENT = 210, // (undocumented) MISSING_GENERATED_DEF = 906, @@ -101,6 +103,8 @@ export const enum RuntimeErrorCode { // (undocumented) MISSING_LOCALE_DATA = 701, // (undocumented) + MISSING_NG_MODULE_DEFINITION = 915, + // (undocumented) MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP = 402, // (undocumented) MISSING_SSR_CONTENT_INTEGRITY_MARKER = -507, diff --git a/packages/core/src/errors.ts b/packages/core/src/errors.ts index afeda548b34..c94240a7720 100644 --- a/packages/core/src/errors.ts +++ b/packages/core/src/errors.ts @@ -122,6 +122,8 @@ export const enum RuntimeErrorCode { COMPONENT_ID_COLLISION = -912, IMAGE_PERFORMANCE_WARNING = -913, UNEXPECTED_ZONEJS_PRESENT_IN_ZONELESS_MODE = 914, + MISSING_NG_MODULE_DEFINITION = 915, + MISSING_DIRECTIVE_DEFINITION = 916, // Signal integration errors REQUIRED_INPUT_NO_VALUE = -950, diff --git a/packages/core/src/render3/def_getters.ts b/packages/core/src/render3/def_getters.ts index 3b10d10d50b..294c84ef14e 100644 --- a/packages/core/src/render3/def_getters.ts +++ b/packages/core/src/render3/def_getters.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ +import {RuntimeError, RuntimeErrorCode} from '../errors'; import {Type} from '../interface/type'; import type {NgModuleDef} from '../r3_symbols'; import {stringify} from '../util/stringify'; @@ -16,8 +17,12 @@ export function getNgModuleDef(type: any, throwIfNotFound: true): NgModuleDef export function getNgModuleDef(type: any): NgModuleDef | null; export function getNgModuleDef(type: any, throwIfNotFound?: boolean): NgModuleDef | null { const ngModuleDef = type[NG_MOD_DEF] || null; - if (!ngModuleDef && throwIfNotFound === true) { - throw new Error(`Type ${stringify(type)} does not have 'ɵmod' property.`); + if (!ngModuleDef && throwIfNotFound) { + throw new RuntimeError( + RuntimeErrorCode.MISSING_NG_MODULE_DEFINITION, + (typeof ngDevMode === 'undefined' || ngDevMode) && + `Type ${stringify(type)} does not have 'ɵmod' property.`, + ); } return ngModuleDef; } @@ -36,8 +41,12 @@ export function getDirectiveDef(type: any, throwIfNotFound: true): DirectiveD export function getDirectiveDef(type: any): DirectiveDef | null; export function getDirectiveDef(type: any, throwIfNotFound?: boolean): DirectiveDef | null { const def = type[NG_DIR_DEF] || null; - if (!def && throwIfNotFound === true) { - throw new Error(`Type ${stringify(type)} does not have 'ɵdir' property.`); + if (!def && throwIfNotFound) { + throw new RuntimeError( + RuntimeErrorCode.MISSING_DIRECTIVE_DEFINITION, + (typeof ngDevMode === 'undefined' || ngDevMode) && + `Type ${stringify(type)} does not have 'ɵdir' property.`, + ); } return def; } diff --git a/packages/core/test/bundling/router/bundle.golden_symbols.json b/packages/core/test/bundling/router/bundle.golden_symbols.json index e722ca67070..665e6f1cc1d 100644 --- a/packages/core/test/bundling/router/bundle.golden_symbols.json +++ b/packages/core/test/bundling/router/bundle.golden_symbols.json @@ -692,7 +692,7 @@ "standardizeConfig", "storeLViewOnDestroy", "stringify", - "stringify11", + "stringify12", "stringifyCSSSelector", "stripTrailingSlash", "subscribeOn",