⛰️
SupabaseでGoogle認証を使用したいけど「.local.env」が認識がされない
SupabaseとNext.jsでアプリケーションを開発している時に、環境変数ファイルを.local.env
してNext.jsに読み込ませていた。
Email / Passwordログインと、Googleログインの2つのログイン方法を実装したかったため、Googleログイン用の環境変数を.local.envに入れていた。
問題
supabase start
のタイミングで.env.local
が読み込まれない
コードに直接書くことは避けたいので、以下の方法を取っていた。
export GOOGLE_CLIENT_ID="<Google クライアントID>"
export GOOGLE_CLIENT_SECRET="<Google シークレットキー>"
npx supabase start
解決
Twitterでタイラーさんに聞いたらこのような返答を頂いた。
ドキュメントを読むと、.env.local
ではなく.env
である必要があるらしい?
ベストプラクティスとして、シークレット値は環境変数からロードする必要があります。これらを.envプロジェクトのルートディレクトリのファイルに追加すると、 CLIで自動的に置き換えられます。
と書いており、ルートディレクトリに置かなければならないらしい。
実際に試して見た。
/.env
でsupabase start
を実行
Error evaluating "env(GOOGLE_CLIENT_ID)": environment variable GOOGLE_CLIENT_ID is unset.
GOOGLE_CLIENT_IDは見つからないらしい。
/supabase/.env
でsupabase start
を実行
Started supabase local development setup.
API URL: http://127.0.0.1:54321
GraphQL URL: http://127.0.0.1:54321/graphql/v1
DB URL: postgresql://postgres:postgres@127.0.0.1:54322/postgres
Studio URL: http://127.0.0.1:54323
Inbucket URL: http://127.0.0.1:54324
JWT secret: super-secret-jwt-token-with-at-least-32-characters-long
....
解決。
未解決:Turborepo
現在のプロジェクトはTurborepoを使用しており、Supabaseは/packages/supabase
に格納している。
この場合、上記では、/packages/.env
は起動したが/.env
では起動がしなかった。
他の方法で解決する可能性はあるとは思うが、一旦調査中。
Discussion