-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Description
Describe the bug
A +page.svelte with +page.server.js using provided fetch in load cannot fetch prerendered endpoint (+server.js) after build
Click to the page will give 500 Internal Error Error: Not found: /api/something,
However, it will be okay only if you refresh the page
I tried different methods, found that
Methods that always work
- +page.js
- +page.server.js with native fetch and url.origin
Methods that does not work
- +page.server.js with sveltekit fetch
- +page.server.js with sveltekit fetch and url.origin
According to https://kit.svelte.dev/docs/load#making-fetch-requests, I suspect that the provided fetch somehow stripped out the origin. It turned the fetch into an internal request to a prerendered route /api/something, which did not exist, and should be localhost:4173/api/something instead
Note: It also happened using @sveltejs/adapter-vercel
Related issue (I suspect)
#8039
#8331
Reproduction
https://github.com/benlau6/sveltekit-fetch-prerendered-endpoint-issue
- pnpm build
- pnpm preview
- Goto website
- Goto any of failure pages at navigation
- (Optional) Refresh, somehow it works
- (Optional) Goto any of success pages at navigation, it always works
Logs
Error: Not found: /api/something
at resolve (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:3095:18)
at resolve (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:2982:34)
at options.hooks.handle (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:3217:59)
at respond (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:2980:42)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async fetch (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:2785:20)
at async file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:2714:12
at async load (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/entries/pages/failure/1/_page.server.js:2:15)
at async load_server_data (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:921:18)
SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at packageData (/Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/node_modules/.pnpm/[email protected]/node_modules/undici/lib/fetch/body.js:553:19)
at specConsumeBody (/Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/node_modules/.pnpm/[email protected]/node_modules/undici/lib/fetch/body.js:517:10)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async load (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/entries/pages/failure/1/_page.server.js:3:16)
at async load_server_data (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:921:18)
at async Promise.all (index 1)
at async render_data (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:2194:19)
at async resolve (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:3067:22)
at async respond (file:///Users/benyp/bull_butler/sveltekit-fetch-prerendered-endpoint-issue/.svelte-kit/output/server/index.js:2980:22)System Info
System:
OS: macOS 13.1
CPU: (10) arm64 Apple M1 Pro
Memory: 50.56 MB / 16.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 18.7.0 - ~/.nvm/versions/node/v18.7.0/bin/node
npm: 8.15.0 - ~/.nvm/versions/node/v18.7.0/bin/npm
Browsers:
Chrome: 95.0.4638.69
Firefox: 108.0.1
Safari: 16.2
npmPackages:
@sveltejs/adapter-auto: ^1.0.0 => 1.0.0
@sveltejs/kit: ^1.0.0 => 1.0.1
svelte: ^3.54.0 => 3.55.0
vite: ^4.0.0 => 4.0.4Severity
serious, but I can work around it
Additional Information
No response