Error building with @sveltejs/adapter-static after upgrading SvelteKit
Describe the bug
I'm upgrading my SvelteKit version from "1.0.0-next.324" to "1.1.0" and I've already fixed everything to work on the dev server, but when I try to build with @sveltejs/adapter-static the error on the log came.
Reproduction
Try run npm run build on https://github.com/RiwEZ/TanatBlog on dev branch
Logs
.svelte-kit/output/server/chunks/index.js 4.34 kB
.svelte-kit/output/server/internal.js 4.43 kB
.svelte-kit/output/server/index.js 78.65 kB
file:///D:/Projects/blog/client/node_modules/@sveltejs/kit/src/core/postbuild/prerender.js:260
enqueue(decoded, decodeURI(pathname), pathname);
^
URIError: URI malformed
at decodeURI (<anonymous>)
at visit (file:///D:/Projects/blog/client/node_modules/@sveltejs/kit/src/core/postbuild/prerender.js:260:22)
Node.js v19.4.0
[vite-plugin-sveltekit-compile] Prerendering failed with code 1
error during build:
Error: Prerendering failed with code 1
at ChildProcess.<anonymous> (file:///D:/Projects/blog/client/node_modules/@sveltejs/kit/src/exports/vite/index.js:599:15)
at ChildProcess.emit (node:events:513:28)
at ChildProcess._handle.onexit (node:internal/child_process:293:12)
System Info
System:
OS: Windows 10 10.0.19045
CPU: (16) x64 AMD Ryzen 9 5900HX with Radeon Graphics
Memory: 21.28 GB / 31.86 GB
Binaries:
Node: 19.4.0 - C:\Program Files\nodejs\node.EXE
npm: 9.2.0 - C:\Program Files\nodejs\npm.CMD
Browsers:
Edge: Spartan (44.19041.1266.0), Chromium (108.0.1462.76)
Internet Explorer: 11.0.19041.1566
npmPackages:
@sveltejs/adapter-auto: ^1.0.0 => 1.0.0
@sveltejs/adapter-node: ^1.1.1 => 1.1.1
@sveltejs/adapter-static: next => 1.0.2
@sveltejs/kit: next => 1.1.0
svelte: ^3.44.0 => 3.55.1
Severity
blocking an upgrade
Additional Information
This broke when I try to migrate to a newer version of SvelteKit.
As instructed in the issue template:
Reproductions must be short, self-contained and correct and must not contain files or code that aren't relevant to the issue — please do NOT just paste a link to your project.
So, I can't find a way to exactly reproduce the error I found. But I found something similar (maybe it's expected behavior, I don't know)
- Create a folder [slug].json and
+server.tsthat will serve a GET that read some file like this
import type { RequestHandler } from './$types';
import { readFileSync } from 'fs';
const PATH = './src/data';
export const GET: RequestHandler = async ({ params }) => {
const data = readFileSync(`${PATH}/${params.slug}.txt`, 'utf-8');
return new Response(JSON.stringify({ data }));
};
- Create a folder [slug] that will contain
<!-- +page.svelte -->
<script lang="ts">
import type { PageData } from './$types';
export let data: PageData;
let t = data.text;
</script>
<div>{t}</div>
// +page.ts (if I use +page.server.ts, it'll also make the same error)
import type { PageLoad } from './$types';
import { base } from '$app/paths';
export const load: PageLoad = async ({ params, fetch }) => {
const fetchURL = `${base}/${params.slug}.json`;
const res = await fetch(fetchURL);
const res_data = (await res.json());
return { text: res_data.data };
};
- Use
@sveltejs/adapter-staticand on+layout.server.tsaddexport const pretender = trueto prerender everything.
If we try to use npm run build (vite build) it gives this error (npm run dev doesn't have any problems)
.svelte-kit/output/server/chunks/index.js 3.29 kB
.svelte-kit/output/server/internal.js 3.81 kB
.svelte-kit/output/server/index.js 78.65 kB
file:///D:/Projects/blog/static_bug/node_modules/@sveltejs/kit/src/core/postbuild/prerender.js:394
throw new Error(
^
Error: The following routes were marked as prerenderable, but were not prerendered because they were not found while crawling your app:
- /[slug]
See https://kit.svelte.dev/docs/page-options#prerender-troubleshooting for info on how to solve this
at prerender (file:///D:/Projects/blog/static_bug/node_modules/@sveltejs/kit/src/core/postbuild/prerender.js:394:9)
at async file:///D:/Projects/blog/static_bug/node_modules/@sveltejs/kit/src/core/postbuild/index.js:89:25
Node.js v19.4.0
[vite-plugin-sveltekit-compile] Prerendering failed with code 1
error during build:
Error: Prerendering failed with code 1
at ChildProcess.<anonymous> (file:///D:/Projects/blog/static_bug/node_modules/@sveltejs/kit/src/exports/vite/index.js:599:15)
at ChildProcess.emit (node:events:513:28)
at ChildProcess._handle.onexit (node:internal/child_process:293:12)
This is expected behaviour. The error tells you what happened — the route was not found while crawling your app. You need to link to any pages that you want to prerender, or put them in config.kit.prerender.entries