0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルに env がない=本番に存在しない、ではなかった — Vercel×Stripe の env 別管理で詰まった話

0
Posted at

この記事で解決できること

  • Stripe 決済の完了件数が 0 件でも「本番が壊れている」と即断してはいけない理由
  • ローカル .env.local の欠落と Vercel 本番 env の欠落を区別するチェックコマンド

環境

  • Next.js App Router(Vercel デプロイ)
  • Stripe サブスクリプション決済
  • Supabase(購読完了レコードの保存先)

起きたこと

Stripe 決済導線の検証中(2026-06-17)、以下の状態が重なった。

  1. ローカルの .env.localSTRIPE_PRICE_ID の記載がなかった
  2. Supabase の completions テーブルのレコードが 0 件だった

この 2 点から「本番 Vercel に price ID が設定されていない → Stripe 決済が壊れている」と判断してデバッグを開始した。


実際の状態

vercel env ls production を叩いたところ、STRIPE_PRICE_ID は本番に設定済みだった。

Stripe の LIVE モードで決済画面を直接開くと、チェックアウトページまで正常に到達できた。

推測は外れていた。本番は正常だった。


なぜこのミスが起きたか

ローカル env ≠ 本番 Vercel env

.env.local はローカル開発専用のファイルです。Vercel の環境変数とは完全に独立しています。

場所 環境変数の管理
ローカル開発 .env.local(gitignore 対象)
Vercel production Dashboard → Settings → Environment Variables
Vercel preview 同上(production と別設定可能)

完了 0 件 ≠ 壊れている

件数が 0 件の原因には複数の解釈がある。

  1. 本番が壊れていてチェックアウトが通らない(誤判断)
  2. 本番は正常だが、まだ誰も完了していない(実際の状態)
  3. 完了は発生しているが Supabase への記録が失敗している

この 3 つを区別せず 1 を即採用したのがミスだった。


解決策: 本番が壊れているかの確認手順

# Step 1: 本番の環境変数を確認
vercel env ls production

# Step 2: Stripe の LIVE モードで決済画面を直接開く
# (チェックアウトページまで到達できるか自分で確認する)

# Step 3: 完了が 0 件でも、まず本番フローを直接試す

ローカルの状態を本番の代理にしない。本番は本番で直接確認する


まとめ

  • ローカル .env.local に無い = Vercel 本番に無い、ではない
  • 完了件数 0 件 = 壊れている、ではない。「まだ誰も試していない」可能性もある
  • 「本番が壊れているかも」と感じたら、推測前に vercel env ls production と本番フローの直接確認を

AI ツールを業務に組み込む設計の実験ログを書いています。 https://masatoman.net

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?