Max Is Back

新規事業/起業/スタートアップとして新しい価値を作るためで学んだことを発信していくブログです。

Nuxt + Firebase + heroku で環境変数がセットできず、firebaseでinvalid-api-keyが発生する

はじめに

表題の環境で、Firebase Authenticationを使おうと設定したら、ローカルでは動くもののherokuへのデプロイ後のproduction環境では動作しなかった。

デバッグしていくと、ログインダイアログを表示させる際に

{code: "auth/invalid-api-key", message: "Your API key is invalid, please check you have copied it correctly."}

というエラーが表示されていた。

クリックした瞬間、通信も発生せずに出ているようなのでAPI Keyがそもそもセットできていない疑いがあった。

dotenvを使い環境変数をセットしていた。

原因

plugins/firebase.jsというファイルを作り、process.env.API_KEY を読んでKEYをセットしていたが、これではビルド後には正しくデータを読まないらしい。

(参考) API: env プロパティ - Nuxt.js https://ja.nuxtjs.org/api/configuration-env/

対策

nuxt.config.jsにenvプロパティとして、以下のようにセットした。

env: {
    FIREBASE_APIKEY: process.env.FIREBASE_APIKEY,
    FIREBASE_AUTH_DOMAIN: process.env.FIREBASE_AUTH_DOMAIN,
    FIREBASE_DB_URL: process.env.FIREBASE_DB_URL,
    FIREBASE_PROJECT_ID: process.env.FIREBASE_PROJECT_ID,
    FIREBASE_STORAGE_BUCKET: process.env.FIREBASE_STORAGE_BUCKET,
    FIREBASE_MESSAGING_SENDER_ID: process.env.FIREBASE_MESSAGING_SENDER_ID
  }

環境変数を使う部分は変更なし。 process.env.***でそのまま呼び出せる。

補足

ローカル環境で、npm build しても問題なく動いた。SSR特有の問題なのかもしれない。よくわからない。