sveltejs / sveltejs/kit

Calling `prerender` function with large input fail the build

Open
#14,258 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
20.8k
Forks
2.3k
Avg merge
1d 16h
Merged PRs (30d)
156

Description

Describe the bug

calling a prerender function with large(long) input cause sveltekit to cache the output to a file with a very long name and then the build fail probably becuase of file name length limit

Reproduction

https://github.com/ongsalt/prerender-file-name-too-long

note that this work fine on stackblitz probably becuase of this

Logs
vite v7.1.2 building SSR bundle for production...
✓ 176 modules transformed.
vite v7.1.2 building for production...
✓ 150 modules transformed.
.svelte-kit/output/client/_app/version.json                        0.03 kB │ gzip:  0.05 kB
.svelte-kit/output/client/.vite/manifest.json                      2.52 kB │ gzip:  0.51 kB
.svelte-kit/output/client/_app/immutable/chunks/DsnmJJEf.js        0.07 kB │ gzip:  0.08 kB
.svelte-kit/output/client/_app/immutable/entry/start.CPHDRvYU.js   0.08 kB │ gzip:  0.09 kB
.svelte-kit/output/client/_app/immutable/nodes/0.xi1bx7BM.js       0.30 kB │ gzip:  0.25 kB
.svelte-kit/output/client/_app/immutable/chunks/AB6WPPtM.js        0.53 kB │ gzip:  0.34 kB
.svelte-kit/output/client/_app/immutable/nodes/1.CGFo8fxX.js       0.55 kB │ gzip:  0.35 kB
.svelte-kit/output/client/_app/immutable/nodes/2.wQTUp8h2.js       2.43 kB │ gzip:  1.25 kB
.svelte-kit/output/client/_app/immutable/chunks/7HNG5UGF.js        3.74 kB │ gzip:  1.99 kB
.svelte-kit/output/client/_app/immutable/entry/app.C0Y8afsr.js     7.27 kB │ gzip:  3.45 kB
.svelte-kit/output/client/_app/immutable/chunks/CP7f0ZS2.js       20.75 kB │ gzip:  8.29 kB
.svelte-kit/output/client/_app/immutable/chunks/CLFl3oIp.js       35.71 kB │ gzip: 13.93 kB
✓ built in 702ms

node:internal/event_target:1101
  process.nextTick(() => { throw err; });
                           ^
Error: ENOENT: no such file or directory, open 'C:\Users\ASUS\projects\personal\prerender-file-name-too-long\.svelte-kit\output\prerendered\data\_app\remote\1nqita7\getLength\WyJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIl0'
    at writeFileSync (node:fs:2410:20)
    at save (file:///C:/Users/ASUS/projects/personal/prerender-file-name-too-long/node_modules/@sveltejs/kit/src/core/postbuild/prerender.js:447:4)
    at visit (file:///C:/Users/ASUS/projects/personal/prerender-file-name-too-long/node_modules/@sveltejs/kit/src/core/postbuild/prerender.js:308:4) {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'open',
  path: 'C:\\Users\\ASUS\\projects\\personal\\prerender-file-name-too-long\\.svelte-kit\\output\\prerendered\\data\\_app\\remote\\1nqita7\\getLength\\WyJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIl0'
}
System Info
System:
    OS: Windows 11 10.0.26100
    CPU: (16) x64 AMD Ryzen 7 7730U with Radeon Graphics
    Memory: 3.65 GB / 15.40 GB
  Binaries:
    Node: 24.5.0 - C:\nvm4w\nodejs\node.EXE
    npm: 11.5.1 - C:\nvm4w\nodejs\npm.CMD
    pnpm: 10.12.4 - ~\AppData\Local\Microsoft\WinGet\Links\pnpm.EXE
    bun: 1.2.18 - ~\.bun\bin\bun.EXE
  Browsers:
    Edge: Chromium (139.0.3405.102)
    Internet Explorer: 11.0.26100.1882
  npmPackages:
    @sveltejs/adapter-auto: ^6.0.0 => 6.1.0
    @sveltejs/kit: ^2.22.0 => 2.33.0
    @sveltejs/vite-plugin-svelte: ^6.0.0 => 6.1.2
    svelte: ^5.0.0 => 5.38.2
    vite: ^7.0.4 => 7.1.2
Severity

serious, but I can work around it

Additional Information

i also tried this on wsl and a linux machine. same result but with ENAMETOOLONG instead of ENOENT

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at node_modules/@sveltejs/kit/src/core/postbuild/prerender.js, especially the save and visit locations shown in the stack trace. Reproduce the failure with the linked prerender-file-name-too-long example on Windows and Linux, then verify that a large prerender input no longer causes the build to fail because of the generated path length.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.