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?
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
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];
}