From 62ddea7bb7cb91fb5091daec4ed4709742d3c123 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Fri, 23 Apr 2021 15:20:19 -0400 Subject: [PATCH] Support the /404 route in the dev server (#128) * Support the /404 route in the dev server * Fix status code * Formatting --- examples/snowpack/package-lock.json | 2 +- src/dev.ts | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/examples/snowpack/package-lock.json b/examples/snowpack/package-lock.json index d1731c2ec2..b802bc6876 100644 --- a/examples/snowpack/package-lock.json +++ b/examples/snowpack/package-lock.json @@ -1014,7 +1014,7 @@ "rollup": "^2.43.1", "rollup-plugin-terser": "^7.0.2", "sass": "^1.32.8", - "snowpack": "^3.3.2", + "snowpack": "^3.3.4", "svelte": "^3.35.0", "tiny-glob": "^0.2.8", "unified": "^9.2.1", diff --git a/src/dev.ts b/src/dev.ts index c20d9c7234..505a994259 100644 --- a/src/dev.ts +++ b/src/dev.ts @@ -34,6 +34,7 @@ export default async function dev(astroConfig: AstroConfig) { if (result.contentType) { res.setHeader('Content-Type', result.contentType); } + res.statusCode = 200; res.write(result.contents); res.end(); break; @@ -43,8 +44,18 @@ export default async function dev(astroConfig: AstroConfig) { const reqPath = decodeURI(fullurl.pathname); error(logging, 'static', 'Not found', reqPath); res.statusCode = 404; - res.setHeader('Content-Type', 'text/plain'); - res.end('Not Found'); + + const fourOhFourResult = await runtime.load('/404'); + if (fourOhFourResult.statusCode === 200) { + if (fourOhFourResult.contentType) { + res.setHeader('Content-Type', fourOhFourResult.contentType); + } + res.write(fourOhFourResult.contents); + } else { + res.setHeader('Content-Type', 'text/plain'); + res.write('Not Found'); + } + res.end(); break; } case 500: {