router.resolution: 'server' prerenders a <pathname>/__route.js module for each page. When the page's own output filename has an extension, the file and the directory land at the same path and writePrerendered fails.
Repro on version-3, no PR needed:
- Add
router: { resolution: 'server' } to packages/kit/test/prerendering/basics/vite.config.js
pnpm build && cd packages/kit/test/prerendering/basics && npx vite build
Error: Cannot create directory build/page.html, a file already exists at this position
at mkdirp (packages/kit/src/utils/filesystem.js:12:11)
at Object.writePrerendered (packages/kit/src/core/adapt/builder.js:219:8)
[cause]: EEXIST: mkdir 'build/page.html'
That fixture has a src/routes/page.html route, so prerendered/pages/page.html (a file) and prerendered/dependencies/page.html/__route.js (a directory) merge into the same build/ path. save()'s route-conflict guards don't fire because pages and dependencies are separate trees.
Also blocks adding a prerendering fixture with server resolution, which is currently untested.
router.resolution: 'server'prerenders a<pathname>/__route.jsmodule for each page. When the page's own output filename has an extension, the file and the directory land at the same path andwritePrerenderedfails.Repro on
version-3, no PR needed:router: { resolution: 'server' }topackages/kit/test/prerendering/basics/vite.config.jspnpm build && cd packages/kit/test/prerendering/basics && npx vite buildThat fixture has a
src/routes/page.htmlroute, soprerendered/pages/page.html(a file) andprerendered/dependencies/page.html/__route.js(a directory) merge into the samebuild/path.save()'s route-conflict guards don't fire because pages and dependencies are separate trees.Also blocks adding a prerendering fixture with server resolution, which is currently untested.