diff --git a/packages/angular/build/src/builders/dev-server/vite-server.ts b/packages/angular/build/src/builders/dev-server/vite-server.ts index ac983f9e8a37..74edbc35ee8f 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -103,6 +103,7 @@ export async function* serveWithVite( // Disable prerendering if enabled and force SSR. // This is so instead of prerendering all the routes for every change, the page is "prerendered" when it is requested. browserOptions.prerender = false; + browserOptions.ssr ||= true; } // Set all packages as external to support Vite's prebundle caching 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 e8b0a954e84b..4e55a7703f78 100644 --- a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts @@ -32,6 +32,9 @@ export function createAngularSsrInternalMiddleware( } (async () => { + // Load the compiler because `@angular/ssr/node` depends on `@angular/` packages, + // which must be processed by the runtime linker, even if they are not used. + await loadEsmModule('@angular/compiler'); const { writeResponseToNodeResponse, createWebRequestFromNodeRequest } = await loadEsmModule('@angular/ssr/node'); @@ -74,6 +77,10 @@ export async function createAngularSsrExternalMiddleware( | ReturnType | undefined; + // Load the compiler because `@angular/ssr/node` depends on `@angular/` packages, + // which must be processed by the runtime linker, even if they are not used. + await loadEsmModule('@angular/compiler'); + const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = await loadEsmModule('@angular/ssr/node');