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'); });