@@ -39,8 +39,7 @@ import { join } from 'path';
3939
4040import { enableProdMode } from '@angular/core' ;
4141
42- import { ngExpressEngine } from '@nguniversal/express-engine' ;
43- import { REQUEST , RESPONSE } from '@nguniversal/express-engine/tokens' ;
42+
4443
4544import { environment } from './src/environments/environment' ;
4645import { createProxyMiddleware } from 'http-proxy-middleware' ;
@@ -55,6 +54,11 @@ import { APP_CONFIG, AppConfig } from './src/config/app-config.interface';
5554import { extendEnvironmentWithAppConfig } from './src/config/config.util' ;
5655import { logStartupMessage } from './startup-message' ;
5756import { TOKENITEM } from './src/app/core/auth/models/auth-token-info.model' ;
57+ import { CommonEngine } from '@angular/ssr' ;
58+ import { APP_BASE_HREF } from '@angular/common' ;
59+ import { REQUEST , RESPONSE } from './src/express.tokens' ;
60+ import { dirname , resolve } from 'node:path' ;
61+ import { fileURLToPath } from 'node:url' ;
5862
5963
6064/*
@@ -88,6 +92,9 @@ export function app() {
8892 * Create a new express application
8993 */
9094 const server = express ( ) ;
95+ const serverDistFolder = dirname ( fileURLToPath ( import . meta. url ) ) ;
96+ const browserDistFolder = resolve ( serverDistFolder , '../browser' ) ;
97+ const commonEngine = new CommonEngine ( ) ;
9198
9299 // Tell Express to trust X-FORWARDED-* headers from proxies
93100 // See https://expressjs.com/en/guide/behind-proxies.html
@@ -128,7 +135,7 @@ export function app() {
128135 server . use ( json ( ) ) ;
129136
130137 // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
131- server . engine ( 'html' , ( _ , options , callback ) =>
138+ /* server.engine('html', (_, options, callback) =>
132139 ngExpressEngine({
133140 bootstrap,
134141 providers: [
@@ -146,7 +153,7 @@ export function app() {
146153 },
147154 ],
148155 })(_, (options as any), callback),
149- ) ;
156+ );*/
150157
151158 server . engine ( 'ejs' , ejs . renderFile ) ;
152159
@@ -227,7 +234,12 @@ export function app() {
227234 * copy of the page (see cacheCheck())
228235 */
229236 router . get ( '*' , cacheCheck , ngApp ) ;
230-
237+ // All regular routes use the Angular engine
238+ // server.get('*', (req, res, next) => {
239+ // const { protocol, originalUrl, baseUrl, headers } = req;
240+ //
241+ //
242+ // });
231243 server . use ( environment . ui . nameSpace , router ) ;
232244
233245 return server ;
@@ -236,10 +248,10 @@ export function app() {
236248/*
237249 * The callback function to serve server side angular
238250 */
239- function ngApp ( req , res ) {
251+ function ngApp ( req , res , next ) {
240252 if ( environment . universal . preboot ) {
241253 // Render the page to user via SSR (server side rendering)
242- serverSideRender ( req , res ) ;
254+ serverSideRender ( req , res , next ) ;
243255 } else {
244256 // If preboot is disabled, just serve the client
245257 console . log ( 'Universal off, serving for direct client-side rendering (CSR)' ) ;
@@ -255,9 +267,37 @@ function ngApp(req, res) {
255267 * @param sendToUser if true (default), send the rendered content to the user.
256268 * If false, then only save this rendered content to the in-memory cache (to refresh cache).
257269 */
258- function serverSideRender ( req , res , sendToUser : boolean = true ) {
270+ function serverSideRender ( req , res , next , sendToUser : boolean = true ) {
271+ const { protocol, originalUrl, baseUrl, headers } = req ;
272+ const commonEngine = new CommonEngine ( ) ;
259273 // Render the page via SSR (server side rendering)
260- res . render ( indexHtml , {
274+ commonEngine
275+ . render ( {
276+ bootstrap,
277+ documentFilePath : indexHtml ,
278+ url : `${ protocol } ://${ headers . host } ${ originalUrl } ` ,
279+ publicPath : DIST_FOLDER ,
280+ providers : [
281+ { provide : APP_BASE_HREF , useValue : baseUrl } ,
282+ {
283+ provide : REQUEST ,
284+ useValue : req ,
285+ } ,
286+ {
287+ provide : RESPONSE ,
288+ useValue : res ,
289+ } ,
290+ {
291+ provide : APP_CONFIG ,
292+ useValue : environment ,
293+ } ,
294+ ] ,
295+ } )
296+ . then ( ( html ) => res . send ( html ) )
297+ . catch ( ( err ) => next ( err ) ) ;
298+
299+
300+ /* res.render(indexHtml, {
261301 req,
262302 res,
263303 preboot: environment.universal.preboot,
@@ -290,7 +330,7 @@ function serverSideRender(req, res, sendToUser: boolean = true) {
290330 clientSideRender(req, res);
291331 }
292332 }
293- } ) ;
333+ });*/
294334}
295335
296336/**
@@ -426,7 +466,7 @@ function checkCacheForRequest(cacheName: string, cache: LRU<string, any>, req, r
426466 // Update cached copy by rerendering server-side
427467 // NOTE: In this scenario the currently cached copy will be returned to the current user.
428468 // This re-render is peformed behind the scenes to update cached copy for next user.
429- serverSideRender ( req , res , false ) ;
469+ serverSideRender ( req , res , null , false ) ;
430470 }
431471 } else {
432472 if ( environment . cache . serverSide . debug ) { console . log ( `CACHE MISS FOR ${ key } in ${ cacheName } cache.` ) ; }
0 commit comments