最初に結論を書いておく。
svelte.config.js
の指定はこう。
// ...
kit: {
adapter: adapter({ fallback: "index.html" }),
prerender: { entries: [] },
},
そして、根本の+layout.js
はこう。
export const ssr = false;
ルートでprerender = true
しない
当初は、adapter-static
のドキュメントを先に見てて、書いてあるとおりにルートの+layout.js
でこう指定してた。
Static site generation • Docs • SvelteKit https://kit.svelte.dev/docs/adapter-static
export const ssr = false;
// コレ
export const prerender = true;
しかし、こうしてしまうと、routes/[itemId]/view
みたいに動的なルートを作ってた場合に、ビルド時エラーになる。
Error: The following routes were marked as prerenderable, but were not prerendered because they were not found while crawling your app
いわく、
prerender = true
に従い事前レンダリングしようとしたが- (動的なルートを)クローラーが見つけられなかった
- だからエラーにするぜ!
って。
svelte.config.js
のほうで、prerender: { entries: [] }
の指定をしてるなら、このルートでの指定は要らない。
あわせて指定してしまうと、動的なルートではなく静的なルートでさえも見つからないって言われちゃう。