From 9236bcd4aba18c4e8907432afd7ef498e75a030a Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Fri, 3 Jan 2025 16:25:26 +0000 Subject: [PATCH] chore: version 19.0.0-rc.3 --- ponyracer/angular.json | 2 +- ponyracer/package.json | 6 ++-- ponyracer/src/app/app.config.server.ts | 3 ++ ponyracer/src/app/app.routes.server.ts | 8 +++++ ponyracer/src/server.ts | 45 +++++++++++++------------- 5 files changed, 38 insertions(+), 26 deletions(-) create mode 100644 ponyracer/src/app/app.routes.server.ts diff --git a/ponyracer/angular.json b/ponyracer/angular.json index f45a235..cd9187b 100644 --- a/ponyracer/angular.json +++ b/ponyracer/angular.json @@ -31,7 +31,7 @@ ], "scripts": [], "server": "src/main.server.ts", - "prerender": true, + "outputMode": "server", "ssr": { "entry": "src/server.ts" } diff --git a/ponyracer/package.json b/ponyracer/package.json index 89f01b7..bfcf187 100644 --- a/ponyracer/package.json +++ b/ponyracer/package.json @@ -20,15 +20,15 @@ "@angular/platform-browser-dynamic": "^19.0.0-next.0", "@angular/platform-server": "^19.0.0-next.0", "@angular/router": "^19.0.0-next.0", - "@angular/ssr": "^19.0.0-rc.2", + "@angular/ssr": "^19.0.0-rc.3", "express": "^4.18.2", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "^19.0.0-rc.2", - "@angular/cli": "^19.0.0-rc.2", + "@angular-devkit/build-angular": "^19.0.0-rc.3", + "@angular/cli": "^19.0.0-rc.3", "@angular/compiler-cli": "^19.0.0-next.0", "@types/express": "^4.17.17", "@types/jasmine": "~5.1.0", diff --git a/ponyracer/src/app/app.config.server.ts b/ponyracer/src/app/app.config.server.ts index 3514d3a..1b7f650 100644 --- a/ponyracer/src/app/app.config.server.ts +++ b/ponyracer/src/app/app.config.server.ts @@ -1,10 +1,13 @@ import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; import { provideServerRendering } from '@angular/platform-server'; +import { provideServerRoutesConfig } from '@angular/ssr'; import { appConfig } from './app.config'; +import { serverRoutes } from './app.routes.server'; const serverConfig: ApplicationConfig = { providers: [ provideServerRendering(), + provideServerRoutesConfig(serverRoutes) ] }; diff --git a/ponyracer/src/app/app.routes.server.ts b/ponyracer/src/app/app.routes.server.ts new file mode 100644 index 0000000..ffd37b1 --- /dev/null +++ b/ponyracer/src/app/app.routes.server.ts @@ -0,0 +1,8 @@ +import { RenderMode, ServerRoute } from '@angular/ssr'; + +export const serverRoutes: ServerRoute[] = [ + { + path: '**', + renderMode: RenderMode.Prerender + } +]; diff --git a/ponyracer/src/server.ts b/ponyracer/src/server.ts index f6a88ad..0f3612e 100644 --- a/ponyracer/src/server.ts +++ b/ponyracer/src/server.ts @@ -1,16 +1,18 @@ -import { APP_BASE_HREF } from '@angular/common'; -import { CommonEngine, isMainModule } from '@angular/ssr/node'; +import { + AngularNodeAppEngine, + createNodeRequestHandler, + isMainModule, + writeResponseToNodeResponse, +} from '@angular/ssr/node'; import express from 'express'; -import { dirname, join, resolve } from 'node:path'; +import { dirname, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; -import bootstrap from './main.server'; const serverDistFolder = dirname(fileURLToPath(import.meta.url)); const browserDistFolder = resolve(serverDistFolder, '../browser'); -const indexHtml = join(serverDistFolder, 'index.server.html'); const app = express(); -const commonEngine = new CommonEngine(); +const angularApp = new AngularNodeAppEngine(); /** * Example Express Rest API endpoints can be defined here. @@ -27,30 +29,24 @@ const commonEngine = new CommonEngine(); /** * Serve static files from /browser */ -app.get( - '**', +app.use( express.static(browserDistFolder, { maxAge: '1y', - index: 'index.html' + index: false, + redirect: false, }), ); /** * Handle all other requests by rendering the Angular application. */ -app.get('**', (req, res, next) => { - const { protocol, originalUrl, baseUrl, headers } = req; - - commonEngine - .render({ - bootstrap, - documentFilePath: indexHtml, - url: `${protocol}://${headers.host}${originalUrl}`, - publicPath: browserDistFolder, - providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }], - }) - .then((html) => res.send(html)) - .catch((err) => next(err)); +app.use('/**', (req, res, next) => { + angularApp + .handle(req) + .then((response) => + response ? writeResponseToNodeResponse(response, res) : next(), + ) + .catch(next); }); /** @@ -63,3 +59,8 @@ if (isMainModule(import.meta.url)) { console.log(`Node Express server listening on http://localhost:${port}`); }); } + +/** + * The request handler used by the Angular CLI (dev-server and during build). + */ +export const reqHandler = createNodeRequestHandler(app);