sveltejs/kit · error · Error

Could not find prerendered page ${file} for route ${path}

Error message

Could not find prerendered page ${file} for route ${path}

What it means

While embedding prerendered pages into the server bundle, adapter-bun cross-references builder.prerendered.pages against the collected build output file list. If a page's HTML file exists in the prerender metadata but no matching artifact was emitted, this error is thrown.

Source

Thrown at packages/adapter-bun/index.js:319

	});

	/**
	 * @param {{ abs: string, rel: string }} file
	 * @param {string} helper
	 * @param {string} [url]
	 */
	const entry = async (file, helper, url = file.rel) =>
		`...${helper}(${JSON.stringify(url)}, asset_${asset_index.get(file)}, ${JSON.stringify(await asset_meta(file.abs))})`;

	const page_files = new Map(pr_pages.map((file) => [file.rel, file]));
	const page_rels = new Set([...builder.prerendered.pages].map(([_, { file }]) => file));

	const entries = await Promise.all([
		...cl_files.map((file) => entry(file, 'client_asset')),
		...[...builder.prerendered.pages].map(([path, { file }]) => {
			const page = page_files.get(file);
			if (page === undefined)
				throw new Error(`Could not find prerendered page ${file} for route ${path}`);
			return entry(page, 'prerendered_page', path);
		}),
		...pr_pages
			.filter(({ rel }) => !page_rels.has(rel))
			.map((file) => entry(file, 'prerendered_asset')),
		...[...pr_deps, ...pr_data].map((file) => entry(file, 'prerendered_asset'))
	]);

	const index_by_rel = new Map(
		assets.map(({ rel }, i) => /** @type {[string, number]} */ ([rel, i])).reverse()
	);

	return {
		imports,
		entries,
		server_assets: server_assets.map((file) => {
			const idx = index_by_rel.get(file);
			if (idx === undefined) throw new Error(`Could not find server asset ${file}`);

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Clean the build output (rm -rf build .svelte-kit) and rebuild with `bun run --bun build`.
  2. Check build logs for prerender failures on the affected route and fix the underlying prerender error.
  3. Verify no custom build/output configuration separates prerendered HTML from the indexed output.
  4. Disable prerendering for the affected route if its HTML is not needed, or update the adapter/Bun version.

Example fix

// before
bun run --bun build   // stale artifacts kept index out of sync
// after (clean, full rebuild)
rm -rf build .svelte-kit node_modules/.vite && bun install && bun run --bun build
Defensive patterns

Strategy: try-catch

Validate before calling

import fs from 'node:fs';
// verify prerendered page files exist in build output before adapting
for (const [route, { file }] of builder.prerendered.pages) {
  if (!fs.existsSync(file)) {
    throw new Error(`Prerendered page for ${route} (${file}) missing from build output — clean rebuild required`);
  }
}

Type guard

const pageIsEmbedded = (pageFiles, file) => pageFiles.has(file);

Try / catch

try {
  await build();
} catch (e) {
  if (/Could not find prerendered page/.test(e.message)) {
    const [file, route] = /prerendered page (\S+) for route (\S+)/.exec(e.message)?.slice(1, 3) ?? [];
    console.error(`Route ${route}: prerender output ${file} missing. Fix prerender errors, clean build dirs, rebuild.`);
    process.exit(1);
  }
  throw e;
}

Prevention

When it happens

Trigger: get_embed_entries iterates builder.prerendered.pages; page_files (the index of built output files) has no entry for the page's `file`, so the prerendered_page entry cannot be created for that route.

Common situations: Prerender metadata stale relative to the build output (partial/modified builds); a page that failed to prerender; custom output directory configurations breaking the file index; mixing cached artifacts with a fresh build.

Related errors


AI-assisted analysis of sveltejs/kit@03f1687fe6 (2026-09-02). Data as JSON: /api/errors/33463e38abd49488. Report an issue: GitHub.