diff options
author | 2022-12-12 16:45:57 -0300 | |
---|---|---|
committer | 2022-12-12 16:45:57 -0300 | |
commit | 4d9ef23b6745b28a92ca985a6a1d86b45c894f3c (patch) | |
tree | 6b76e31aa5e6a30dc9f4709a5ec308465cb65cc2 /packages/integrations/vercel/src/serverless/entrypoint.ts | |
parent | a219c41319315ec08a4e10777360c010a366813e (diff) | |
download | astro-4d9ef23b6745b28a92ca985a6a1d86b45c894f3c.tar.gz astro-4d9ef23b6745b28a92ca985a6a1d86b45c894f3c.tar.zst astro-4d9ef23b6745b28a92ca985a6a1d86b45c894f3c.zip |
fix(vercel): support node-fetch and Node 18 fetch (#5587)
Diffstat (limited to 'packages/integrations/vercel/src/serverless/entrypoint.ts')
-rw-r--r-- | packages/integrations/vercel/src/serverless/entrypoint.ts | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/packages/integrations/vercel/src/serverless/entrypoint.ts b/packages/integrations/vercel/src/serverless/entrypoint.ts index e41d0a438..daa811015 100644 --- a/packages/integrations/vercel/src/serverless/entrypoint.ts +++ b/packages/integrations/vercel/src/serverless/entrypoint.ts @@ -3,12 +3,21 @@ import type { SSRManifest } from 'astro'; import { App } from 'astro/app'; import type { IncomingMessage, ServerResponse } from 'node:http'; -import { getRequest, setResponse } from './request-transform.js'; +import * as requestTransformLegacy from './request-transform/legacy.js'; +import * as requestTransformNode18 from './request-transform/node18.js'; polyfill(globalThis, { exclude: 'window document', }); +// Node 18+ has a new API for request/response, while older versions use node-fetch +// When we drop support for Node 14, we can remove the legacy code by switching to undici + +const nodeVersion = parseInt(process.version.split('.')[0].slice(1)); // 'v14.17.0' -> 14 + +const { getRequest, setResponse } = + nodeVersion >= 18 ? requestTransformNode18 : requestTransformLegacy; + export const createExports = (manifest: SSRManifest) => { const app = new App(manifest); |