@@ -13,6 +13,9 @@ import {
1313 targetFromTargetString ,
1414} from '@angular-devkit/architect' ;
1515import { JsonObject } from '@angular-devkit/core' ;
16+ import type { Type } from '@angular/core' ;
17+ import type * as platformServer from '@angular/platform-server' ;
18+ import assert from 'assert' ;
1619import * as fs from 'fs' ;
1720import * as path from 'path' ;
1821import { normalizeOptimization } from '../../utils' ;
@@ -74,24 +77,28 @@ async function _renderUniversal(
7477 localeDirectory ,
7578 ) ;
7679
77- const { AppServerModule, renderModule } = await import ( serverBundlePath ) ;
80+ const { AppServerModule, renderModule, ɵSERVER_CONTEXT } = ( await import ( serverBundlePath ) ) as {
81+ renderModule : typeof platformServer . renderModule | undefined ;
82+ ɵSERVER_CONTEXT : typeof platformServer . ɵSERVER_CONTEXT | undefined ;
83+ AppServerModule : Type < unknown > | undefined ;
84+ } ;
7885
79- const renderModuleFn : ( ( module : unknown , options : { } ) => Promise < string > ) | undefined =
80- renderModule ;
81-
82- if ( ! ( renderModuleFn && AppServerModule ) ) {
83- throw new Error (
84- `renderModule method and/or AppServerModule were not exported from: ${ serverBundlePath } .` ,
85- ) ;
86- }
86+ assert ( renderModule , `renderModule method was not exported from: ${ serverBundlePath } .` ) ;
87+ assert ( AppServerModule , `AppServerModule method was not exported from: ${ serverBundlePath } .` ) ;
88+ assert ( ɵSERVER_CONTEXT , `ɵSERVER_CONTEXT method was not exported from: ${ serverBundlePath } .` ) ;
8789
8890 // Load platform server module renderer
89- const renderOpts = {
91+ let html = await renderModule ( AppServerModule , {
9092 document : indexHtml ,
9193 url : options . route ,
92- } ;
94+ extraProviders : [
95+ {
96+ provide : ɵSERVER_CONTEXT ,
97+ useValue : 'app-shell' ,
98+ } ,
99+ ] ,
100+ } ) ;
93101
94- let html = await renderModuleFn ( AppServerModule , renderOpts ) ;
95102 // Overwrite the client index file.
96103 const outputIndexPath = options . outputIndexPath
97104 ? path . join ( root , options . outputIndexPath )
0 commit comments