web-dev-qa-db-fra.com

Comment configurer les variables d'environnement locales pour Cloud Functions for Firebase

J'utilise les fonctions de nuage http pour écouter une demande, puis renvoyer un message simple.

Je développe des fonctions de cloud localement en utilisant:

firebase serve --only functions

J'ai configuré des variables d'environnement personnalisées à l'aide de

firebase functions:config:set

L'accès aux variables de configuration personnalisées à l'aide du code ci-dessous fonctionne correctement lorsque le projet est déployé.

 functions.config()

mais cela ne fonctionne pas lors du développement local. Lorsque la fonction est déclenchée en appuyant sur: http: // localhost: 5002/nom-mon-projet/us-central1/nom_fonction Je ne peux pas accéder aux variables de configuration personnalisées. lors de l'utilisation locale de functions.config (), je peux voir la configuration par défaut, mais pas mes variables de configuration personnalisées

Existe-t-il une autre solution ou meilleure pratique pour les variables d'environnement lorsque vous travaillez localement?

43
ChrisMacSEA

A partir de maintenant, vous devez créer manuellement un .runtimeconfig.json fichier dans votre répertoire de fonctions en exécutant cette commande. Ensuite, exécutez la commande serve.

firebase functions:config:get > .runtimeconfig.json

Si vous utilisez Windows Powershell, remplacez ce qui précède par:

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

Vous pouvez en apprendre plus en https://firebase.google.com/docs/functions/local-emulator

74
laurenzlong

Pour ceux qui veulent utiliser les variables d’environnement (process.env), je suis cette solution de contournement.

Définir les valeurs de configuration avant le déploiement

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

Lisez la configuration et mettez à jour les variables env en premier dans le code de votre fonction.

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