⛰️

SupabaseでGoogle認証を使用したいけど「.local.env」が認識がされない

2024/04/01に公開

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でタイラーさんに聞いたらこのような返答を頂いた。

https://x.com/dshukertjrjp/status/1774017698265252215?s=20

ドキュメントを読むと、.env.localではなく.envである必要があるらしい?
https://supabase.com/docs/guides/cli/local-development#use-auth-locally

ベストプラクティスとして、シークレット値は環境変数からロードする必要があります。これらを.envプロジェクトのルートディレクトリのファイルに追加すると、 CLIで自動的に置き換えられます。

と書いており、ルートディレクトリに置かなければならないらしい。
実際に試して見た。

/.envsupabase startを実行

Error evaluating "env(GOOGLE_CLIENT_ID)": environment variable GOOGLE_CLIENT_ID is unset.

GOOGLE_CLIENT_IDは見つからないらしい。

/supabase/.envsupabase 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では起動がしなかった。
他の方法で解決する可能性はあるとは思うが、一旦調査中。

SasaTech Engineer Blog

Discussion