Skip to content

Handle entries when +page.ts are +server.ts in the same directory. #9929

@hyunbinseo

Description

@hyunbinseo

Describe the bug

In the following setup,

tree src/routes 

src/routes
└── [slug]
    ├── +page.svelte
    ├── +page.ts
    └── +server.ts
// src/routes/[slug]/+page.ts
export const prerender = true;
export const entries = () => [{ slug: '1' }];

the pre-rendering and production router are broken.

Browser Dev Preview
/1 +page.svelte rendered 404 Not Found
npm run build && tree .svelte-kit/output/prerendered

.svelte-kit/output/prerendered  [error opening dir]

Reproduction

Reference the StackBlitz project.

Currently, removing the +server.ts file seems to be the only solution.

An empty +server.ts does not work either.

Logs

No response

System Info

├─ @sveltejs/adapter-auto@2.0.1
├─ @sveltejs/kit@1.16.3
├─ svelte@3.59.1
├─ svelte-check@3.3.2
├─ svelte-hmr@0.15.1
├─ svelte-preprocess@5.0.3

Severity

serious, but I can work around it

Additional Information

If the +server.ts exports entries,

// src/routes/[slug]/+server.ts

import { json } from '@sveltejs/kit';
import type { EntryGenerator, RequestHandler } from './$types';

// Uncomment these two lines in the StackBlitz project.
export const prerender = true;
export const entries = (() => [{ slug: '2' }]) satisfies EntryGenerator;

export const GET = (({ params }) => json(params)) satisfies RequestHandler;

only this gets pre-rendered.

Browser Dev Preview
/1 +page.svelte rendered 404 Not Found
/2 +page.svelte rendered {"slug":"2"}
npm run build && tree .svelte-kit/output/prerendered

.svelte-kit/output/prerendered
└── pages
    └── 2

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions