Skip to content

Commit 6643a1c

Browse files
committed
Fix root route ID check
1 parent 4f4dbdf commit 6643a1c

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

packages/react-router-dev/vite/rsc/virtual-route-modules.ts

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,28 +109,40 @@ export function transformVirtualRouteModules({
109109
return createVirtualRouteModuleCode({
110110
id,
111111
code,
112+
routeIdByFile,
112113
viteCommand,
113114
viteEnvironment,
114115
});
115116
}
116117

117118
if (isVirtualServerRouteModuleId(id)) {
118-
return createVirtualServerRouteModuleCode({ id, code, viteEnvironment });
119+
return createVirtualServerRouteModuleCode({
120+
id,
121+
code,
122+
viteEnvironment,
123+
});
119124
}
120125

121126
if (isVirtualClientRouteModuleId(id)) {
122-
return createVirtualClientRouteModuleCode({ id, code, viteCommand });
127+
return createVirtualClientRouteModuleCode({
128+
id,
129+
code,
130+
routeIdByFile,
131+
viteCommand,
132+
});
123133
}
124134
}
125135

126136
async function createVirtualRouteModuleCode({
127137
id,
128138
code: routeSource,
139+
routeIdByFile,
129140
viteCommand,
130141
viteEnvironment,
131142
}: {
132143
id: string;
133144
code: string;
145+
routeIdByFile: Map<string, string>;
134146
viteCommand: ViteCommand;
135147
viteEnvironment: Vite.Environment;
136148
}) {
@@ -183,7 +195,10 @@ async function createVirtualRouteModuleCode({
183195
}
184196
}
185197

186-
if (id === "root" && !staticExports.includes("ErrorBoundary")) {
198+
if (
199+
isRootRouteId({ id, routeIdByFile }) &&
200+
!staticExports.includes("ErrorBoundary")
201+
) {
187202
code += `export { ErrorBoundary } from "${clientModuleId}";\n`;
188203
}
189204

@@ -236,10 +251,12 @@ function createVirtualServerRouteModuleCode({
236251
function createVirtualClientRouteModuleCode({
237252
id,
238253
code: routeSource,
254+
routeIdByFile,
239255
viteCommand,
240256
}: {
241257
id: string;
242258
code: string;
259+
routeIdByFile: Map<string, string>;
243260
viteCommand: ViteCommand;
244261
}) {
245262
const { staticExports, isServerFirstRoute, hasClientExports } =
@@ -256,7 +273,10 @@ function createVirtualClientRouteModuleCode({
256273
const generatorResult = babel.generate(clientRouteModuleAst);
257274
generatorResult.code = '"use client";' + generatorResult.code;
258275

259-
if (id === "root" && !staticExports.includes("ErrorBoundary")) {
276+
if (
277+
isRootRouteId({ id, routeIdByFile }) &&
278+
!staticExports.includes("ErrorBoundary")
279+
) {
260280
const hasRootLayout = staticExports.includes("Layout");
261281
generatorResult.code += `\nimport { createElement as __rr_createElement } from "react";\n`;
262282
generatorResult.code += `import { UNSAFE_RSCDefaultRootErrorBoundary } from "react-router";\n`;
@@ -306,3 +326,13 @@ export function isVirtualClientRouteModuleId(id: string): boolean {
306326
function isVirtualServerRouteModuleId(id: string): boolean {
307327
return /(\?|&)server-route-module(&|$)/.test(id);
308328
}
329+
330+
function isRootRouteId({
331+
id,
332+
routeIdByFile,
333+
}: {
334+
id: string;
335+
routeIdByFile: Map<string, string>;
336+
}) {
337+
return routeIdByFile.has(id.split("?")[0]);
338+
}

0 commit comments

Comments
 (0)