web-dev-qa-db-ja.com

Cloud Functions for Firebaseのローカル環境変数をどのように設定しますか

HTTPクラウド関数を使用してリクエストをリッスンし、簡単なメッセージを返します。

私はローカルでクラウド機能を開発しています:

firebase serve --only functions

私はいくつかのカスタム環境変数を使用してセットアップしました

firebase functions:config:set

以下のコードを使用してカスタム構成変数にアクセスすると、プロジェクトがデプロイされたときに正常に機能します

 functions.config()

ただし、ローカルで開発する場合は機能しません。ヒットして機能がトリガーされた場合: http:// localhost:5002/my-project-name/us-central1/functionName カスタム構成変数にアクセスできません。 functions.config()をローカルで使用すると、カスタム構成変数ではなくデフォルト構成が表示されます

ローカルで作業する場合、環境変数の代替ソリューションまたはベストプラクティスはありますか?

43
ChrisMacSEA

現在のところ、このコマンドを実行して手動で.runtimeconfig.jsonファイルを作成する必要があります関数ディレクトリ内。次に、serveコマンドを実行します。

firebase functions:config:get > .runtimeconfig.json

Windows Powershellを使用している場合、上記を次のように置き換えます。

firebase functions:config:get | ac .runtimeconfig.json

詳細については https://firebase.google.com/docs/functions/local-emulator をご覧ください。

74
laurenzlong

環境変数(process.env)を使用する場合は、この回避策に従います。

デプロイする前に設定値を設定します

firebase functions:config:set envs.db_Host=$DB_Host_PROD envs.db_user=$DB_USER_PROD envs.db_password=$DB_PASSWORD_PROD envs.db_name=$DB_NAME_PROD envs.db_use_ssl=false

構成を読み取り、関数コードの下で最初にenv変数を更新します。

const functions = require('firebase-functions');
const config = functions.config();
// Porting envs from firebase config
for (const key in config.envs){
  process.env[key.toUpperCase()] = config.envs[key];
}
7
Muthukumar