From 98685f38ee771e85608b750501002c46fe1ba5f1 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 21 Mar 2025 07:28:30 +0000 Subject: [PATCH] fix(@angular/build): handle undefined `getOrCreateAngularServerApp` during error compilation Enhanced error handling to account for cases where `getOrCreateAngularServerApp` is undefined during the compilation process. This prevents unexpected crashes and improves build stability. Closes #29907 --- .../src/tools/vite/middlewares/ssr-middleware.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts index 36e602491fd4..387a94a2ba53 100644 --- a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts @@ -40,15 +40,16 @@ export function createAngularSsrInternalMiddleware( const { writeResponseToNodeResponse, createWebRequestFromNodeRequest } = await loadEsmModule('@angular/ssr/node'); - // The following is necessary because accessing the module after invalidation may result in an empty module, - // which can trigger a `TypeError: ɵgetOrCreateAngularServerApp is not a function` error. - // TODO: look into why. - await server.ssrLoadModule('/main.server.mjs'); - const { ɵgetOrCreateAngularServerApp } = (await server.ssrLoadModule('/main.server.mjs')) as { ɵgetOrCreateAngularServerApp: typeof getOrCreateAngularServerApp; }; + // `ɵgetOrCreateAngularServerApp` can be undefined right after an error. + // See: https://github.com/angular/angular-cli/issues/29907 + if (!ɵgetOrCreateAngularServerApp) { + return next(); + } + const angularServerApp = ɵgetOrCreateAngularServerApp({ allowStaticRouteRender: true, });