RemixをVercelで動かすときにファイルを読む方法

1 min read

なぜ?

https://docs.remix.run/v1/tutorials/blog/

このチュートリアルでは、fs/promisesでMarkdownファイルを読んでいる。

が、Vercelで動かすには追加の設定が必要。

でないと、デプロイ結果に外部のファイルが含まれない。ローカルでは普通に動くので、デプロイするまで気づかなかった。

上記のエラー表示はroot.rsxErrorBoundaryで設定できる。

設定

レポジトリ/
  L app/
    L routes
      L index.tsx
      L ...
    L root.tsx
    L ...
  L data/
    L entries/
      L hoge.md
      L ...
  L public/
    L favicon.ico
    L ...
  L server/
    L build/ # ignore
    L index.js
  L ...

こんな感じで、リポジトリ/data/**にMarkdownを置いているとする。

vercel.json
{
  "builds": [
    {
      "src": "public/**/*",
      "use": "@vercel/static"
    },
    {
      "src": "server/index.js",
-      "use": "@vercel/node"
+      "use": "@vercel/node",
+      "config": {
+        "includeFiles": "data/**"
+      }
    }
  ],
  以下略
}

その場合、vercel.jsonで@vercel/nodeconfig"includeFiles": "data/**" を指定する。

vercel.jsonは初回セットアップ時に「Vercel」を選べば生成される。

Discussion

ログインするとコメントできます