mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-16 10:33:43 +08:00
fix(@angular/ssr): handle baseHref that start with ./
Updated function to support handling `baseHref` starting with './' path correctly.
This commit is contained in:
parent
1bc5d65bf0
commit
8c534da649
@ -421,12 +421,15 @@ export async function getRoutesFromAngularRouterConfig(
|
||||
const routesResults: RouteTreeNodeMetadata[] = [];
|
||||
const errors: string[] = [];
|
||||
|
||||
const baseHref =
|
||||
let baseHref =
|
||||
injector.get(APP_BASE_HREF, null, { optional: true }) ??
|
||||
injector.get(PlatformLocation).getBaseHrefFromDOM();
|
||||
|
||||
const compiler = injector.get(Compiler);
|
||||
if (baseHref.startsWith('./')) {
|
||||
baseHref = baseHref.slice(2);
|
||||
}
|
||||
|
||||
const compiler = injector.get(Compiler);
|
||||
const serverRoutesConfig = injector.get(SERVER_ROUTES_CONFIG, null, { optional: true });
|
||||
let serverConfigRouteTree: RouteTree<ServerConfigRouteTreeAdditionalMetadata> | undefined;
|
||||
|
||||
|
@ -42,7 +42,7 @@ describe('AngularAppEngine', () => {
|
||||
setAngularAppTestingManifest(
|
||||
[{ path: 'home', component: HomeComponent }],
|
||||
[{ path: '**', renderMode: RenderMode.Server }],
|
||||
locale,
|
||||
'/' + locale,
|
||||
);
|
||||
|
||||
return {
|
||||
|
@ -355,4 +355,24 @@ describe('extractRoutesAndCreateRouteTree', () => {
|
||||
{ route: '/', renderMode: RenderMode.Server, status: 201 },
|
||||
]);
|
||||
});
|
||||
|
||||
it(`handles a baseHref starting with a "./" path`, async () => {
|
||||
setAngularAppTestingManifest(
|
||||
[{ path: 'home', component: DummyComponent }],
|
||||
[{ path: '**', renderMode: RenderMode.Server }],
|
||||
/** baseHref*/ './example',
|
||||
);
|
||||
|
||||
const { routeTree, errors } = await extractRoutesAndCreateRouteTree(
|
||||
url,
|
||||
/** manifest */ undefined,
|
||||
/** invokeGetPrerenderParams */ true,
|
||||
/** includePrerenderFallbackRoutes */ true,
|
||||
);
|
||||
|
||||
expect(errors).toHaveSize(0);
|
||||
expect(routeTree.toObject()).toEqual([
|
||||
{ route: '/example/home', renderMode: RenderMode.Server },
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
@ -21,12 +21,12 @@ import { ServerRoute, provideServerRoutesConfig } from '../src/routes/route-conf
|
||||
*
|
||||
* @param routes - An array of route definitions to be used by the Angular Router.
|
||||
* @param serverRoutes - An array of ServerRoute definitions to be used for server-side rendering.
|
||||
* @param [baseHref=''] - An optional base href to be used in the HTML template.
|
||||
* @param [baseHref='/'] - An optional base href to be used in the HTML template.
|
||||
*/
|
||||
export function setAngularAppTestingManifest(
|
||||
routes: Routes,
|
||||
serverRoutes: ServerRoute[],
|
||||
baseHref = '',
|
||||
baseHref = '/',
|
||||
additionalServerAssets: Record<string, ServerAsset> = {},
|
||||
): void {
|
||||
setAngularAppManifest({
|
||||
@ -40,7 +40,7 @@ export function setAngularAppTestingManifest(
|
||||
text: async () => `<html>
|
||||
<head>
|
||||
<title>SSR page</title>
|
||||
<base href="/${baseHref}" />
|
||||
<base href="${baseHref}" />
|
||||
</head>
|
||||
<body>
|
||||
<app-root></app-root>
|
||||
@ -55,7 +55,7 @@ export function setAngularAppTestingManifest(
|
||||
`<html>
|
||||
<head>
|
||||
<title>CSR page</title>
|
||||
<base href="/${baseHref}" />
|
||||
<base href="${baseHref}" />
|
||||
</head>
|
||||
<body>
|
||||
<app-root></app-root>
|
||||
|
Loading…
x
Reference in New Issue
Block a user