diff --git a/packages/remix-deno/server.ts b/packages/remix-deno/server.ts index cbb8791a4ab..fa129eb3f3e 100644 --- a/packages/remix-deno/server.ts +++ b/packages/remix-deno/server.ts @@ -36,6 +36,12 @@ export function createRequestHandler({ }; } +class StaticFileNotFoundError extends Error { + constructor(message: string) { + super(message); + } +} + export async function serveStaticFiles( request: Request, { @@ -64,9 +70,18 @@ export async function serveStaticFiles( headers.set("Cache-Control", defaultCacheControl(url, assetsPublicPath)); } - const file = await Deno.readFile(path.join(publicDir, url.pathname)); - - return new Response(file, { headers }); + const filePath = path.join(publicDir, url.pathname); + try { + const file = await Deno.readFile(filePath); + return new Response(file, { headers }); + } catch (error) { + if (error.code === "EISDIR" || error.code === "ENOENT") { + throw new StaticFileNotFoundError( + `No such file or directory: ${filePath}`, + ); + } + throw error; + } } export function createRequestHandlerWithStaticFiles({ @@ -93,7 +108,7 @@ export function createRequestHandlerWithStaticFiles({ try { return await serveStaticFiles(request, staticFiles); } catch (error) { - if (error.code !== "EISDIR" && error.code !== "ENOENT") { + if (!(error instanceof StaticFileNotFoundError)) { throw error; } }