diff --git a/.changeset/polite-ducks-notice.md b/.changeset/polite-ducks-notice.md new file mode 100644 index 000000000000..8aa096da4878 --- /dev/null +++ b/.changeset/polite-ducks-notice.md @@ -0,0 +1,9 @@ +--- +'@sveltejs/adapter-cloudflare-workers': patch +'@sveltejs/adapter-netlify': patch +'@sveltejs/adapter-node': patch +'@sveltejs/adapter-vercel': patch +'@sveltejs/kit': patch +--- + +Externalize app initialization to adapters diff --git a/packages/adapter-cloudflare-workers/files/entry.js b/packages/adapter-cloudflare-workers/files/entry.js index d5749d7f83cb..1c7db17461fe 100644 --- a/packages/adapter-cloudflare-workers/files/entry.js +++ b/packages/adapter-cloudflare-workers/files/entry.js @@ -1,7 +1,8 @@ // TODO hardcoding the relative location makes this brittle -import { render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved +import { init, render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved import { getAssetFromKV, NotFoundError } from '@cloudflare/kv-asset-handler'; // eslint-disable-line import/no-unresolved +init(); addEventListener('fetch', (event) => { event.respondWith(handle(event)); }); diff --git a/packages/adapter-netlify/files/entry.js b/packages/adapter-netlify/files/entry.js index c230c41d488a..482d0cb2b055 100644 --- a/packages/adapter-netlify/files/entry.js +++ b/packages/adapter-netlify/files/entry.js @@ -1,8 +1,9 @@ import '@sveltejs/kit/install-fetch'; // eslint-disable-line import/no-unresolved // TODO hardcoding the relative location makes this brittle -import { render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved +import { init, render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved +init(); export async function handler(event) { const { path, httpMethod, headers, rawQuery, body, isBase64Encoded } = event; diff --git a/packages/adapter-node/src/index.js b/packages/adapter-node/src/index.js index 6914d4828e70..a1b45947c449 100644 --- a/packages/adapter-node/src/index.js +++ b/packages/adapter-node/src/index.js @@ -1,9 +1,10 @@ import './require_shim'; import { createServer } from './server'; // TODO hardcoding the relative location makes this brittle -import { render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved +import { init, render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved import { host, port } from './env.js'; // eslint-disable-line import/no-unresolved +init(); const instance = createServer({ render }).listen(port, host, () => { console.log(`Listening on port ${port}`); }); diff --git a/packages/adapter-node/src/require_shim.js b/packages/adapter-node/src/require_shim.js index f335a1e3bde0..2aa5259586f1 100644 --- a/packages/adapter-node/src/require_shim.js +++ b/packages/adapter-node/src/require_shim.js @@ -1,2 +1,2 @@ import { createRequire } from 'module'; -global.require = createRequire(import.meta.url); +globalThis.require = createRequire(import.meta.url); diff --git a/packages/adapter-vercel/files/entry.js b/packages/adapter-vercel/files/entry.js index 4fa041c47fee..b7733bfa1858 100644 --- a/packages/adapter-vercel/files/entry.js +++ b/packages/adapter-vercel/files/entry.js @@ -2,8 +2,9 @@ import { getRawBody } from '@sveltejs/kit/node'; // eslint-disable-line import/n import '@sveltejs/kit/install-fetch'; // eslint-disable-line import/no-unresolved // TODO hardcoding the relative location makes this brittle -import { render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved +import { init, render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved +init(); export default async (req, res) => { const { pathname, searchParams } = new URL(req.url || '', 'http://localhost'); diff --git a/packages/kit/src/core/build/index.js b/packages/kit/src/core/build/index.js index a89c485703fe..b89a38fdd6b7 100644 --- a/packages/kit/src/core/build/index.js +++ b/packages/kit/src/core/build/index.js @@ -285,9 +285,11 @@ async function build_server( let options = null; + const default_settings = { paths: ${s(config.kit.paths)} }; + // allow paths to be overridden in svelte-kit preview // and in prerendering - export function init(settings) { + export function init(settings = default_settings) { set_paths(settings.paths); set_prerendering(settings.prerendering || false); @@ -380,8 +382,6 @@ async function build_server( }; } - init({ paths: ${s(config.kit.paths)} }); - export function render(request, { prerender } = {}) { diff --git a/packages/kit/src/install-fetch.js b/packages/kit/src/install-fetch.js index d0271ba0000e..af1df512ea76 100644 --- a/packages/kit/src/install-fetch.js +++ b/packages/kit/src/install-fetch.js @@ -1,7 +1,20 @@ -// @ts-nocheck import fetch, { Response, Request, Headers } from 'node-fetch'; -globalThis.fetch = fetch; -globalThis.Response = Response; -globalThis.Request = Request; -globalThis.Headers = Headers; +Object.defineProperties(globalThis, { + fetch: { + enumerable: true, + value: fetch + }, + Response: { + enumerable: true, + value: Response + }, + Request: { + enumerable: true, + value: Request + }, + Headers: { + enumerable: true, + value: Headers + } +});