Vercel で環境変数を変えたのに、反映されないのはなぜ?
Vercel では、環境変数の変更は、すでにあるデプロイには反映されず、新しいデプロイにだけ入ります。値を変えたら、再デプロイ(Redeploy) して新しいデプロイを作ります。
再デプロイは、プロジェクトの Deployments で対象のデプロイの「…」から Redeploy を選びます。それでも変わらないときは、変数を付けた環境(Production・Preview・Development)が、見ているデプロイと合っているかを確かめます。
再デプロイのしかたは?
- プロジェクトの Deployments を開く。
- 作り直したいデプロイを探し、「…」から Redeploy を選ぶ。
- 既存のビルドキャッシュ(Build Cache)を使うかを選び、Redeploy を押す。
Vercel の案内でも、環境変数を変えたときは再デプロイするよう書かれています。新しくコミットを push しても、新しいデプロイができるので反映されます。
再デプロイしても変わらないときは?
よくある原因
- 環境が違う
- Production にだけ付けた変数は、Preview のデプロイには入りません。Preview はブランチごとに値を分けられ、ブランチの値が優先されます。
- ロールバック中
- Instant Rollback は再ビルドしないので、戻した先のデプロイを作ったときの環境変数のままです。
- 手元の開発
- Development の値は、手元の
.env.localなどに取り込んで使います。設定画面で変えただけでは、手元には入りません。
ビルドのときと動くとき、どちらで読まれる?
Vercel の案内では、環境変数はビルドのとき(Build Step)にも、Functions が動くときにも読めます。どちらで読む値でも、変更が入るのは新しいデプロイからです。動いている Functions だけが新しい値を読む、ということはありません。
よくある質問
- 環境変数を変えるたびに、再デプロイが要る?
- はい。変更は新しいデプロイにだけ入るので、反映させたいデプロイを作り直します。
参考にした資料
- Vercel Docs「Managing environment variables」
- Vercel Docs「Environment variables」
- Vercel Docs「Managing Deployments」
- Vercel Docs「Performing an Instant Rollback on a Deployment」
記事は Vercel の公式ドキュメントをもとにした、個人のまとめです。画面の名前やプランの数字は変わることがあるので、最新は公式ドキュメントで確かめてください。Verdash は Vercel Inc. の公式アプリではありません。Vercel は Vercel Inc. の商標です。