start-basic fails to build on windows
Describe the bug
Using the start-basic example, when you try to the build script it fails.
Your Example Website or App
Use the start-basic example
Steps to Reproduce the Bug or Issue
- Clone the
start-basicexample onto a Windows computer. - Install deps.
- Run the build script (
pnpm build).
Expected behavior
As a user, I expect the application to successfully build.
Screenshots or Videos
No response
Platform
@tanstack/start - 1.43.9 @tanstack/react-router - 1.43.6
Additional context
No response
π¨ This is the build console output on Windows.
> tanstack-router-example-react-start-basic@ build D:\code\tanstack\router\examples\react\start-basic > vinxi buildvinxi v0.3.11
β Building your app... removing D:/code/tanstack/router/examples/react/start-basic/.vinxi/build/client
π¦ Compiling client router... vinxi building router client in client mode
β»οΈ Generating routes... β Processed routes in 543ms vite v5.3.2 building for production... virtual:#vinxi/handler/client (1:109): "default" is not exported by "app/client.tsx", imported by "virtual:#vinxi/handler/client". β 131 modules transformed. .vinxi/build/client/_build/server-functions-manifest.json 0.10 kB β gzip: 0.10 kB .vinxi/build/client/_build/.vite/manifest.json 0.38 kB β gzip: 0.20 kB .vinxi/build/client/_build/assets/app-JDGE9Y9X.css 6.96 kB β gzip: 2.04 kB .vinxi/build/client/_build/assets/client-JWaMu8ot.js 262.11 kB β gzip: 81.66 kB β built in 1.51s β build done 12:20:54 pm
π¦ Compiling ssr router... vinxi building router ssr in http mode
β»οΈ Regenerating routes... β Processed routes in 32ms vite v5.3.2 building SSR bundle for production... β 12 modules transformed. x Build failed in 54ms
[12:20:54 pm] ERROR [tsr-routes-manifest] Could not load tsr:routes-manifest (imported by ../../../packages/start/dist/esm/router-manifest/index.js): Cannot read properties of undefined (reading 'map')
at Object.load (/D:/code/tanstack/router/packages/start/dist/esm/config/index.js:284:46) at async PluginDriver.hookFirstAndGetPlugin (/D:/code/tanstack/router/node_modules/.pnpm/[email protected]/node_modules/rollup/dist/es/shared/node-entry.js:19674:28)
at async /D:/code/tanstack/router/node_modules/.pnpm/[email protected]/node_modules/rollup/dist/es/shared/node-entry.js:18845:33 at async Queue.work (/D:/code/tanstack/router/node_modules/.pnpm/[email protected]/node_modules/rollup/dist/es/shared/node-entry.js:19884:32)[12:20:54 pm] ERROR [tsr-routes-manifest] Could not load tsr:routes-manifest (imported by ../../../packages/start/dist/esm/router-manifest/index.js): Cannot read properties of undefined (reading 'map')
βELIFECYCLEβ Command failed with exit code 1.
β This is the build console output on MacOS
> tanstack-router-example-react-start-basic@ build /Users/seanc/code/tanstack/router/examples/react/start-basic > vinxi buildvinxi v0.3.11
β Building your app... removing /Users/seanc/code/tanstack/router/examples/react/start-basic/.vinxi/build/client removing /Users/seanc/code/tanstack/router/examples/react/start-basic/.vinxi/build/ssr removing /Users/seanc/code/tanstack/router/examples/react/start-basic/.vinxi/build/server
π¦ Compiling client router... vinxi building router client in client mode
β»οΈ Generating routes... β Processed routes in 326ms vite v5.3.2 building for production... virtual:#vinxi/handler/client (1:119): "default" is not exported by "app/client.tsx", imported by "virtual:#vinxi/handler/client". β 142 modules transformed. .vinxi/build/client/_build/server-functions-manifest.json 0.11 kB β gzip: 0.11 kB .vinxi/build/client/_build/.vite/manifest.json 4.01 kB β gzip: 0.64 kB .vinxi/build/client/_build/assets/app-JDGE9Y9X.css 6.96 kB β gzip: 2.04 kB .vinxi/build/client/_build/assets/client-DRtm2ejA.js 0.06 kB β gzip: 0.08 kB .vinxi/build/client/_build/assets/layout-b-BqXZPou9.js 0.13 kB β gzip: 0.13 kB .vinxi/build/client/_build/assets/layout-a-BOzXFuCC.js 0.13 kB β gzip: 0.14 kB .vinxi/build/client/_build/assets/posts.index-Cc3le7HX.js 0.13 kB β gzip: 0.14 kB .vinxi/build/client/_build/assets/index-AWfY11Dp.js 0.17 kB β gzip: 0.16 kB .vinxi/build/client/_build/assets/_layout-DedE34UU.js 0.22 kB β gzip: 0.18 kB .vinxi/build/client/_build/assets/_layout-2-DJ3kL6IW.js 0.43 kB β gzip: 0.24 kB .vinxi/build/client/build/assets/posts._postId.deep-BaKsZ6zQ.js 0.50 kB β gzip: 0.33 kB .vinxi/build/client/_build/assets/posts._postId-HN4Q61M6.js 0.65 kB β gzip: 0.39 kB .vinxi/build/client/_build/assets/posts-CZdr-0gX.js 0.67 kB β gzip: 0.42 kB .vinxi/build/client/_build/assets/deferred-CMKlBZux.js 1.26 kB β gzip: 0.65 kB .vinxi/build/client/_build/assets/posts-DPwlfggv.js 2.08 kB β gzip: 0.97 kB .vinxi/build/client/_build/assets/client-rBve8hNN.js 259.74 kB β gzip: 81.19 kB β built in 978ms β build done 12:24:16 PM
π¦ Compiling ssr router... vinxi building router ssr in http mode
β»οΈ Regenerating routes... β Processed routes in 23ms vite v5.3.2 building SSR bundle for production... ../../../packages/react-router/dist/esm/Match.js (1:0): Module level directives cause errors when bundled, "use client" in "../../../packages/react-router/dist/esm/Match.js" was ignored. ../../../packages/react-router/dist/esm/link.js (1:0): Module level directives cause errors when bundled, "use client" in "../../../packages/react-router/dist/esm/link.js" was ignored. β 131 modules transformed. .vinxi/build/ssr/.vite/manifest.json 3.74 kB .vinxi/build/ssr/assets/app-JDGE9Y9X.css 6.96 kB .vinxi/build/ssr/assets/layout-a-DGkktjJC.js 0.12 kB .vinxi/build/ssr/assets/layout-b-CK0h5wO7.js 0.12 kB .vinxi/build/ssr/assets/posts.index-GrcD0GTd.js 0.13 kB .vinxi/build/ssr/assets/index-B2w76Zax.js 0.16 kB .vinxi/build/ssr/ssr.js 0.22 kB .vinxi/build/ssr/assets/_layout-DbELNLMm.js 0.37 kB .vinxi/build/ssr/assets/layout-2-DrawGWcq.js 0.57 kB .vinxi/build/ssr/assets/posts._postId.deep-DaFg3ANp.js 0.66 kB .vinxi/build/ssr/assets/posts._postId-Byq7Gx-P.js 0.81 kB .vinxi/build/ssr/assets/posts-B4cafvGe.js 0.83 kB .vinxi/build/ssr/assets/deferred-DBBiqBjV.js 1.23 kB .vinxi/build/ssr/assets/posts-C0q103I2.js 4.04 kB .vinxi/build/ssr/assets/ssr-COnXDC7-.js 123.77 kB β built in 429ms β build done 12:24:16 PM
π¦ Compiling server router... vinxi building router server in http mode
β»οΈ Regenerating routes... β Processed routes in 21ms vite v5.3.2 building SSR bundle for production... ../../../packages/react-router/dist/esm/link.js (1:0): Module level directives cause errors when bundled, "use client" in "../../../packages/react-router/dist/esm/link.js" was ignored. ../../../packages/react-router/dist/esm/Match.js (1:0): Module level directives cause errors when bundled, "use client" in "../../../packages/react-router/dist/esm/Match.js" was ignored. β 80 modules transformed. .vinxi/build/server/_server/.vite/manifest.json 0.46 kB .vinxi/build/server/_server/not-found.mjs 0.22 kB .vinxi/build/server/_server/c_7865.mjs 0.77 kB .vinxi/build/server/_server/entry.mjs 4.62 kB β built in 122ms β build done 12:24:16 PM
β Preparing app for vercel... β Generated public .vercel/output/static vinxi 12:24:16 PM βΉ Building Nitro Server (preset: vercel) vinxi 12:24:17 PM β Nitro Server built vinxi 12:24:18 PM
These are the client manifest outputs at start-basic/.vinxi/build/client/_build/vite/manifest.json.
π¨ Windows
{
"D:/code/tanstack/router/examples/react/start-basic/app/styles/app.css": {
"file": "assets/app-JDGE9Y9X.css",
"src": "D:/code/tanstack/router/examples/react/start-basic/app/styles/app.css"
},
"virtual:#vinxi/handler/client": {
"file": "assets/client-JWaMu8ot.js",
"name": "client",
"src": "virtual:#vinxi/handler/client",
"isEntry": true
}
}
β MacOS
{
"/Users/seanc/code/tanstack/router/examples/react/start-basic/app/styles/app.css": {
"file": "assets/app-JDGE9Y9X.css",
"src": "/Users/seanc/code/tanstack/router/examples/react/start-basic/app/styles/app.css"
},
"_client-rBve8hNN.js": {
"file": "assets/client-rBve8hNN.js",
"name": "client",
"dynamicImports": [
"app/routes/posts.tsx?tsr-split",
"app/routes/posts.tsx?tsr-split",
"app/routes/deferred.tsx?tsr-split",
"app/routes/deferred.tsx?tsr-split",
"app/routes/_layout.tsx?tsr-split",
"app/routes/index.tsx?tsr-split",
"app/routes/posts.index.tsx?tsr-split",
"app/routes/posts.$postId.tsx?tsr-split",
"app/routes/posts.$postId.tsx?tsr-split",
"app/routes/_layout/_layout-2.tsx?tsr-split",
"app/routes/posts_.$postId.deep.tsx?tsr-split",
"app/routes/posts_.$postId.deep.tsx?tsr-split",
"app/routes/_layout/_layout-2/layout-b.tsx?tsr-split",
"app/routes/_layout/_layout-2/layout-a.tsx?tsr-split"
]
},
"_posts-DPwlfggv.js": {
"file": "assets/posts-DPwlfggv.js",
"name": "posts",
"imports": [
"_client-rBve8hNN.js"
]
},
"app/routes/_layout.tsx?tsr-split": {
"file": "assets/_layout-DedE34UU.js",
"name": "_layout",
"src": "app/routes/_layout.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js"
]
},
"app/routes/_layout/_layout-2.tsx?tsr-split": {
"file": "assets/_layout-2-DJ3kL6IW.js",
"name": "_layout-2",
"src": "app/routes/_layout/_layout-2.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js"
]
},
"app/routes/_layout/_layout-2/layout-a.tsx?tsr-split": {
"file": "assets/layout-a-BOzXFuCC.js",
"name": "layout-a",
"src": "app/routes/_layout/_layout-2/layout-a.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js"
]
},
"app/routes/_layout/_layout-2/layout-b.tsx?tsr-split": {
"file": "assets/layout-b-BqXZPou9.js",
"name": "layout-b",
"src": "app/routes/_layout/_layout-2/layout-b.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js"
]
},
"app/routes/deferred.tsx?tsr-split": {
"file": "assets/deferred-CMKlBZux.js",
"name": "deferred",
"src": "app/routes/deferred.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js"
]
},
"app/routes/index.tsx?tsr-split": {
"file": "assets/index-AWfY11Dp.js",
"name": "index",
"src": "app/routes/index.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js"
]
},
"app/routes/posts.$postId.tsx?tsr-split": {
"file": "assets/posts._postId-HN4Q61M6.js",
"name": "posts._postId",
"src": "app/routes/posts.$postId.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js",
"_posts-DPwlfggv.js"
]
},
"app/routes/posts.index.tsx?tsr-split": {
"file": "assets/posts.index-Cc3le7HX.js",
"name": "posts.index",
"src": "app/routes/posts.index.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js"
]
},
"app/routes/posts.tsx?tsr-split": {
"file": "assets/posts-CZdr-0gX.js",
"name": "posts",
"src": "app/routes/posts.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js",
"_posts-DPwlfggv.js"
]
},
"app/routes/posts_.$postId.deep.tsx?tsr-split": {
"file": "assets/posts_._postId.deep-BaKsZ6zQ.js",
"name": "posts_._postId.deep",
"src": "app/routes/posts_.$postId.deep.tsx?tsr-split",
"isDynamicEntry": true,
"imports": [
"_client-rBve8hNN.js",
"_posts-DPwlfggv.js"
]
},
"virtual:#vinxi/handler/client": {
"file": "assets/client-DRtm2ejA.js",
"name": "client",
"src": "virtual:#vinxi/handler/client",
"isEntry": true,
"imports": [
"_client-rBve8hNN.js"
]
}
}
This could have a downstream effect on happens here, where it tries to match the route to the values derived from above in filesByRouteFilePath.
I'm not sure if this an issue in Start's implementation or whether it's upstream in Vinxi or Nitro.
Having the exact same issue here! Also noticed the different manifest outputs.
Having the same issue. It builds fine on WSL but on Windows I get a tsr:routes-manifest error.
Closing this as https://github.com/TanStack/router/pull/2367 has resolved this.
This has been tested on a windows machine on the start-basic example. Dev was tested, build was tested, as well as running the build artefacts using preset='node-server'.