Skip to content

Commit

Permalink
fix(@angular/ssr): correctly set config URL
Browse files Browse the repository at this point in the history
When calling `renderApplication` or `renderModule` the URL would be overridden to undefined as the `url` option was not provided as an option.

(cherry picked from commit f6a088b)
  • Loading branch information
alan-agius4 committed Oct 24, 2023
1 parent 2afe760 commit 6224b05
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 28 deletions.
37 changes: 15 additions & 22 deletions packages/angular/ssr/src/common-engine.ts
Expand Up @@ -7,12 +7,7 @@
*/

import { ApplicationRef, StaticProvider, Type } from '@angular/core';
import {
INITIAL_CONFIG,
renderApplication,
renderModule,
ɵSERVER_CONTEXT,
} from '@angular/platform-server';
import { renderApplication, renderModule, ɵSERVER_CONTEXT } from '@angular/platform-server';
import * as fs from 'node:fs';
import { dirname, resolve } from 'node:path';
import { URL } from 'node:url';
Expand Down Expand Up @@ -151,6 +146,11 @@ export class CommonEngine {
}

private async renderApplication(opts: CommonEngineRenderOptions): Promise<string> {
const moduleOrFactory = this.options?.bootstrap ?? opts.bootstrap;
if (!moduleOrFactory) {
throw new Error('A module or bootstrap option must be provided.');
}

const extraProviders: StaticProvider[] = [
{ provide: ɵSERVER_CONTEXT, useValue: 'ssr' },
...(opts.providers ?? []),
Expand All @@ -162,24 +162,17 @@ export class CommonEngine {
document = await this.getDocument(opts.documentFilePath);
}

if (document) {
extraProviders.push({
provide: INITIAL_CONFIG,
useValue: {
document,
url: opts.url,
},
});
}

const moduleOrFactory = this.options?.bootstrap ?? opts.bootstrap;
if (!moduleOrFactory) {
throw new Error('A module or bootstrap option must be provided.');
}
const commonRenderingOptions = {
url: opts.url,
document,
};

return isBootstrapFn(moduleOrFactory)
? renderApplication(moduleOrFactory, { platformProviders: extraProviders })
: renderModule(moduleOrFactory, { extraProviders });
? renderApplication(moduleOrFactory, {
platformProviders: extraProviders,
...commonRenderingOptions,
})
: renderModule(moduleOrFactory, { extraProviders, ...commonRenderingOptions });
}

/** Retrieve the document from the cache or the filesystem */
Expand Down
Expand Up @@ -137,13 +137,15 @@ export function app(): express.Express {
// All regular routes use the Angular engine
server.get('*', (req, res, next) => {
const { protocol, originalUrl, baseUrl, headers } = req;
commonEngine
.render({
bootstrap,
documentFilePath: indexHtml,
url: req.originalUrl,
url: \`\${protocol}://\${headers.host}\${originalUrl}\`,
publicPath: distFolder,
providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }],
providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }],
})
.then((html) => res.send(html))
.catch((err) => next(err));
Expand Down
Expand Up @@ -26,13 +26,15 @@ export function app(): express.Express {

// All regular routes use the Angular engine
server.get('*', (req, res, next) => {
const { protocol, originalUrl, baseUrl, headers } = req;

commonEngine
.render({
<% if (isStandalone) { %>bootstrap<% } else { %>bootstrap: AppServerModule<% } %>,
documentFilePath: indexHtml,
url: req.originalUrl,
url: `${protocol}://${headers.host}${originalUrl}`,
publicPath: browserDistFolder,
providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }],
providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }],
})
.then((html) => res.send(html))
.catch((err) => next(err));
Expand Down
Expand Up @@ -29,13 +29,15 @@ export function app(): express.Express {

// All regular routes use the Angular engine
server.get('*', (req, res, next) => {
const { protocol, originalUrl, baseUrl, headers } = req;

commonEngine
.render({
<% if (isStandalone) { %>bootstrap<% } else { %>bootstrap: AppServerModule<% } %>,
documentFilePath: indexHtml,
url: req.originalUrl,
url: `${protocol}://${headers.host}${originalUrl}`,
publicPath: distFolder,
providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }],
providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }],
})
.then((html) => res.send(html))
.catch((err) => next(err));
Expand Down

0 comments on commit 6224b05

Please sign in to comment.