

Denoでファイルサーバーを書いているのですが、カスタムの404ページを追加するにはどうすれば良いでしょうか？


CC BY-SA 4.0
2022-08-09T10:56:39.040
90453
2022-08-09T17:37:01.570
2022-08-09T16:49:30.353
2376
53925
question
javascript deno
Deno の http/file_server.ts でカスタムの 404 ページを追加したい


これが最適解ではない気もしますが、単純に`serveDir`を使用している場合404のときはresponse#statusが404を持っているので、任意のカスタムレスポンスを代わりにreturnすることでカスタム404が使用可能です。

[code]

    import { serve } from "https://deno.land/std@0.151.0/http/server.ts";
    import { serveDir } from "https://deno.land/std@0.151.0/http/file_server.ts";
    import {
      Status,
      STATUS_TEXT,
    } from "https://deno.land/std@0.151.0/http/http_status.ts";
    
    serve(async (req) => {
      const res = await serveDir(req, {
        fsRoot: "./static/",
        showDirListing: true,
      });
      if (res.status === Status.NotFound) {
        return new Response("404 not found", {
          status: Status.NotFound,
          statusText: STATUS_TEXT[Status.NotFound],
          headers: {
            "content-type": "text/html",
          },
        });
      }
      return res;
    });
    
[/code]


CC BY-SA 4.0
2022-08-09T17:37:01.570
90463
2022-08-09T17:37:01.570
2376
90453
answer