diff options
author | 2023-08-01 09:52:16 -0500 | |
---|---|---|
committer | 2023-08-01 09:52:16 -0500 | |
commit | 298dbb89f2963a547370b6e65cafd2650fdb1b27 (patch) | |
tree | 6650c12dc5985f5d700319b3fc4a3826fbc40070 /packages/integrations/vercel/src | |
parent | 0b8375fe82a15bfff3f517f98de6454adb2779f1 (diff) | |
download | astro-298dbb89f2963a547370b6e65cafd2650fdb1b27.tar.gz astro-298dbb89f2963a547370b6e65cafd2650fdb1b27.tar.zst astro-298dbb89f2963a547370b6e65cafd2650fdb1b27.zip |
Refactor 404 and 500 approach (#7754)
* fix(app): refactor 404 and 500 approach
* chore: refactor logic
* fix: always treat error as page
* test: migrate ssr-prerender-404 to node adapter
* feat: merge original response metadata with error response
* chore: update lockfile
* chore: trigger ci
* chore(lint): fix lint issue
* fix: ensure merged request has proper status
* fix(node): prerender test
* chore: update test label
* fix(node): improve 404 behavior in middleware mode
* fix(vercel): improve 404 behavior
* fix(netlify): improve 404 behavior
* chore: update test labels
* chore: force ci
* chore: fix lint
* fix: avoid infinite loops
* test: fix failing test in Node 18
* chore: remove volta
Diffstat (limited to 'packages/integrations/vercel/src')
-rw-r--r-- | packages/integrations/vercel/src/edge/entrypoint.ts | 20 | ||||
-rw-r--r-- | packages/integrations/vercel/src/serverless/entrypoint.ts | 7 |
2 files changed, 8 insertions, 19 deletions
diff --git a/packages/integrations/vercel/src/edge/entrypoint.ts b/packages/integrations/vercel/src/edge/entrypoint.ts index a9870ef2b..4b88bc793 100644 --- a/packages/integrations/vercel/src/edge/entrypoint.ts +++ b/packages/integrations/vercel/src/edge/entrypoint.ts @@ -13,21 +13,15 @@ export function createExports(manifest: SSRManifest) { const app = new App(manifest); const handler = async (request: Request): Promise<Response> => { - if (app.match(request)) { - Reflect.set(request, clientAddressSymbol, request.headers.get('x-forwarded-for')); - const response = await app.render(request); - if (app.setCookieHeaders) { - for (const setCookieHeader of app.setCookieHeaders(response)) { - response.headers.append('Set-Cookie', setCookieHeader); - } + const routeData = app.match(request); + Reflect.set(request, clientAddressSymbol, request.headers.get('x-forwarded-for')); + const response = await app.render(request, routeData); + if (app.setCookieHeaders) { + for (const setCookieHeader of app.setCookieHeaders(response)) { + response.headers.append('Set-Cookie', setCookieHeader); } - return response; } - - return new Response(null, { - status: 404, - statusText: 'Not found', - }); + return response; }; return { default: handler }; diff --git a/packages/integrations/vercel/src/serverless/entrypoint.ts b/packages/integrations/vercel/src/serverless/entrypoint.ts index 48c9b71d9..9e3cb1da0 100644 --- a/packages/integrations/vercel/src/serverless/entrypoint.ts +++ b/packages/integrations/vercel/src/serverless/entrypoint.ts @@ -23,12 +23,7 @@ export const createExports = (manifest: SSRManifest) => { return res.end(err.reason || 'Invalid request body'); } - let routeData = app.match(request, { matchNotFound: true }); - if (!routeData) { - res.statusCode = 404; - return res.end('Not found'); - } - + let routeData = app.match(request); let locals = {}; if (request.headers.has(ASTRO_LOCALS_HEADER)) { let localsAsString = request.headers.get(ASTRO_LOCALS_HEADER); |