From 9bf170a1c8482e487226c1bc6c8784acdcb6cce8 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Mon, 14 Nov 2022 11:31:10 +0100 Subject: [PATCH] [fix] prerendering path and layout fixes Fixes #7618 - root layout/error should always be included Fixes #7633 - windows path conversion --- .changeset/curly-suits-lay.md | 5 +++++ packages/kit/src/core/generate_manifest/index.js | 6 ++++-- packages/kit/src/exports/vite/preview/index.js | 6 ++++-- 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 .changeset/curly-suits-lay.md diff --git a/.changeset/curly-suits-lay.md b/.changeset/curly-suits-lay.md new file mode 100644 index 000000000000..d3d34ff11e7d --- /dev/null +++ b/.changeset/curly-suits-lay.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +[fix] prerendering path and layout fixes diff --git a/packages/kit/src/core/generate_manifest/index.js b/packages/kit/src/core/generate_manifest/index.js index 12433b523f5e..6445e887f490 100644 --- a/packages/kit/src/core/generate_manifest/index.js +++ b/packages/kit/src/core/generate_manifest/index.js @@ -19,9 +19,11 @@ export function generate_manifest({ build_data, relative_path, routes, format = */ const reindexed = new Map(); /** - * @type {Set} All nodes actually used in the routes definition (prerendered routes are omitted) + * All nodes actually used in the routes definition (prerendered routes are omitted). + * Root layout/error is always included as they are needed for 404 and root errors. + * @type {Set} */ - const used_nodes = new Set(); + const used_nodes = new Set([0, 1]); for (const route of routes) { if (route.page) { diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index a0c69ac9d2db..473b45693d6d 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -5,7 +5,7 @@ import { pathToFileURL } from 'url'; import { getRequest, setResponse } from '../../../exports/node/index.js'; import { installPolyfills } from '../../../exports/node/polyfills.js'; import { SVELTE_KIT_ASSETS } from '../../../constants.js'; -import { loadEnv } from 'vite'; +import { loadEnv, normalizePath } from 'vite'; /** @typedef {import('http').IncomingMessage} Req */ /** @typedef {import('http').ServerResponse} Res */ @@ -100,7 +100,9 @@ export async function preview(vite, vite_config, svelte_config) { const { pathname } = new URL(/** @type {string} */ (req.url), 'http://dummy'); - let filename = join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname); + let filename = normalizePath( + join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname) + ); let prerendered = is_file(filename); if (!prerendered) {