Skip to content

Commit a995c8e

Browse files
committed
fix(@angular/build): prevent prerendering of catch-all routes
Updated the build process to exclude catch-all routes from being prerendered.
1 parent 158774a commit a995c8e

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

packages/angular/build/src/utils/server-rendering/prerender.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ export async function prerenderPages(
121121
const serializableRouteTreeNodeForPrerender: WritableSerializableRouteTreeNode = [];
122122
for (const metadata of serializableRouteTreeNode) {
123123
if (outputMode !== OutputMode.Static && metadata.redirectTo) {
124+
// Skip redirects if output mode is not static.
125+
continue;
126+
}
127+
128+
if (metadata.route.includes('*')) {
129+
// Skip catch all routes from prerender.
124130
continue;
125131
}
126132

@@ -129,7 +135,6 @@ export async function prerenderPages(
129135
case RouteRenderMode.Prerender:
130136
case RouteRenderMode.AppShell:
131137
serializableRouteTreeNodeForPrerender.push(metadata);
132-
133138
break;
134139
case RouteRenderMode.Server:
135140
if (outputMode === OutputMode.Static) {

tests/legacy-cli/e2e/tests/server-rendering/server-routes-output-mode-static.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { join } from 'node:path';
2-
import { expectFileToMatch, replaceInFile, writeFile } from '../../utils/fs';
2+
import { expectFileNotToExist, expectFileToMatch, replaceInFile, writeFile } from '../../utils/fs';
33
import { noSilentNg, silentNg } from '../../utils/process';
44
import { setupProjectWithSSRAppEngine } from './setup';
55
import { existsSync } from 'node:fs';
@@ -36,6 +36,10 @@ export default async function () {
3636
path: 'ssg/:id',
3737
component: SsgWithParamsComponent,
3838
},
39+
{
40+
path: '**',
41+
component: HomeComponent,
42+
},
3943
];
4044
`,
4145
);
@@ -100,4 +104,7 @@ export default async function () {
100104
!existsSync('dist/test-project/server'),
101105
'Server directory should not exist when output-mode is static',
102106
);
107+
108+
// Should not prerender the catch all
109+
await expectFileNotToExist(join('dist/test-project/browser/**/index.html'));
103110
}

0 commit comments

Comments
 (0)