From a8b6e6583160c0021d6aa03d625ed4be29830d1e Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Thu, 6 Aug 2026 18:10:39 +0000 Subject: [PATCH] fix(ssr): enable static route rendering and fix self-import in server.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add AngularAppEngine.ɵallowStaticRouteRender flag so the engine serves prerendered static HTML from disk instead of falling back to SSR - Rename default export to named const (requestHandler) to avoid self-import loop when the module is the entry point - Use requestHandler directly in the main-module listener instead of importing './server.js' which caused TS2307 resolution failure --- server.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/server.ts b/server.ts index 406d223..78cba80 100644 --- a/server.ts +++ b/server.ts @@ -4,8 +4,13 @@ import { isMainModule, writeResponseToNodeResponse, } from '@angular/ssr/node'; +import { AngularAppEngine } from '@angular/ssr'; import * as http from 'node:http'; +// Enable serving prerendered static HTML from disk. Without this flag the +// engine falls back to SSR for every route, ignoring the prerendered output. +AngularAppEngine.ɵallowStaticRouteRender = true; + /** * Public routes prerendered at build time (SSG — Static Site Generation). * These five routes are compiled to static HTML during `ng build` and @@ -53,7 +58,7 @@ function getEngine(): AngularNodeAppEngine { * as pre-generated static HTML from the build output. All other routes * fall back to server-side rendering (SSR) or the fallback 404 handler. */ -export default createNodeRequestHandler(async (req, res, next) => { +const requestHandler = createNodeRequestHandler(async (req, res, next) => { try { const prerendered = isPrerenderedRoute(req.url || '/'); if (prerendered) { @@ -76,11 +81,12 @@ export default createNodeRequestHandler(async (req, res, next) => { } }); +export default requestHandler; + if (isMainModule(import.meta.url)) { const httpServer = http.createServer(); httpServer.on('request', async (req: http.IncomingMessage, res: http.ServerResponse) => { - const handler = (await import('./server.js')).default; - handler(req, res, () => { + requestHandler(req, res, () => { res.statusCode = 404; res.end('Not Found'); });