LoginSignup
63
36

More than 3 years have passed since last update.

Firebase Cloud Functions の環境変数をローカルエミュレート時にも使えるようにする

Last updated at Posted at 2019-05-27

API KeyなどをFirebase Cloud Functionsの環境変数に設定したい場合は、以下のようなコマンドで行うことができます。

環境変数の設定とアクセス方法

$ firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

Firebase公式ドキュメント - 環境の構成

このとき、注意点としては、キーの名前には大文字が使えないのと、2つ以上のキーをドットでつないでやる必要があります。
例えば、foo.barのようにキーの名前をする必要があります。

設定したあとに、

$ firebase deploy --only functions

でデプロイしてやれば、晴れてCloud Functionsのコード上から環境変数にアクセスすることができるようになります。

const id = functions.config().someservice.id  // => "THE CLIENT ID"

ローカルエミュレートでアクセスしようとするとエラーになる

一方、開発中はいちいちデプロイせずに、

$ firebase serve --only functions

として、ローカルエミュレートを起動して、開発を行っている人は多いかと思います。
この状態で、先程設定した環境変数にアクセスしようとすると、

Cannot read property 'id' of undefined`

となってエラーとなってしまいます。

ローカルエミュレート時には環境変数を別途吐き出す必要がある

解決方法としては、functionsディレクトリで、

$ firebase functions:config:get > .runtimeconfig.json

として、.runtimeconfig.jsonファイルを用意してやる必要があります。
こうしてやるとローカルでの開発時にも問題なく環境変数を取り込んでアクセスすることができるようになります。
もちろん、このJSONファイルの中身は機密情報が入っていることもあるかと思いますから、間違ってGitHubで公開してしまわないようにするケアが必要になります。
注意しましょう。

(参考)
Firebase公式ドキュメント - ローカルでの関数の実行

63
36
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
63
36