diff --git a/.changeset/brisk-otters-glow.md b/.changeset/brisk-otters-glow.md new file mode 100644 index 000000000000..798b6f925f28 --- /dev/null +++ b/.changeset/brisk-otters-glow.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-auto': patch +--- + +fix: convert resolved adapter path to a file URL before importing, so builds work on Windows diff --git a/.changeset/tall-frogs-argue.md b/.changeset/tall-frogs-argue.md new file mode 100644 index 000000000000..54c3f7723264 --- /dev/null +++ b/.changeset/tall-frogs-argue.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/kit': patch +'@sveltejs/package': patch +--- + +fix: import resolved peer dependencies as file URLs so project-relative resolution works on Windows diff --git a/packages/adapter-auto/index.js b/packages/adapter-auto/index.js index 5bb56c3be9a1..f2e5edf07c80 100644 --- a/packages/adapter-auto/index.js +++ b/packages/adapter-auto/index.js @@ -1,4 +1,5 @@ import { execSync } from 'node:child_process'; +import { pathToFileURL } from 'node:url'; import { adapters } from './adapters.js'; import path from 'node:path'; import fs from 'node:fs'; @@ -122,7 +123,7 @@ async function get_adapter() { } /** @type {{ default: () => Adapter }} */ - const module = await import(resolved); + const module = await import(pathToFileURL(resolved).href); const adapter = module.default(); diff --git a/packages/kit/src/utils/import.js b/packages/kit/src/utils/import.js index 44b26a276254..19b93b119db8 100644 --- a/packages/kit/src/utils/import.js +++ b/packages/kit/src/utils/import.js @@ -1,5 +1,6 @@ import fs from 'node:fs'; import path from 'node:path'; +import { pathToFileURL } from 'node:url'; /** * Resolves a peer dependency relative to the current working directory. @@ -51,7 +52,7 @@ function resolve_peer(dependency, root) { */ export async function import_peer(dependency, root) { try { - return await import(/* @vite-ignore */ resolve_peer(dependency, root)); + return await import(/* @vite-ignore */ pathToFileURL(resolve_peer(dependency, root)).href); } catch { return await import(/* @vite-ignore */ dependency); } diff --git a/packages/package/src/config.js b/packages/package/src/config.js index e78727c6999b..94544be7d471 100644 --- a/packages/package/src/config.js +++ b/packages/package/src/config.js @@ -1,6 +1,7 @@ import path from 'node:path'; import process from 'node:process'; import fs from 'node:fs'; +import { pathToFileURL } from 'node:url'; /** * Loads and validates the SvelteKit config @@ -39,7 +40,7 @@ export function load_pkg_json(cwd = process.cwd()) { */ async function import_peer(dependency, root) { try { - return await import(/* @vite-ignore */ resolve_peer(dependency, root)); + return await import(/* @vite-ignore */ pathToFileURL(resolve_peer(dependency, root)).href); } catch { return await import(/* @vite-ignore */ dependency); }