router icon indicating copy to clipboard operation
router copied to clipboard

start-basic fails to build on windows

Open SeanCassiere opened this issue 1 year ago β€’ 3 comments

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

  1. Clone the start-basic example onto a Windows computer.
  2. Install deps.
  3. 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

SeanCassiere avatar Jul 04 '24 00:07 SeanCassiere

🚨 This is the build console output on Windows.
> tanstack-router-example-react-start-basic@ build D:\code\tanstack\router\examples\react\start-basic
> vinxi build

vinxi 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 build

vinxi 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

SeanCassiere avatar Jul 04 '24 00:07 SeanCassiere

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.

SeanCassiere avatar Jul 04 '24 00:07 SeanCassiere

I'm not sure if this an issue in Start's implementation or whether it's upstream in Vinxi or Nitro.

SeanCassiere avatar Jul 04 '24 00:07 SeanCassiere

Having the exact same issue here! Also noticed the different manifest outputs.

NimmLor avatar Sep 03 '24 19:09 NimmLor

Having the same issue. It builds fine on WSL but on Windows I get a tsr:routes-manifest error.

SamuelSackey avatar Sep 14 '24 00:09 SamuelSackey

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'.

SeanCassiere avatar Sep 19 '24 01:09 SeanCassiere