J'essaie de tester mes fonctions localement en utilisant le guide répertorié ici https://firebase.google.com/docs/functions/local-emulator
J'ai installé les derniers outils Firebase en utilisant
npm install -g firebase-tools
Dans mon package.json
J'ai confirmé être en cours d'exécution
"firebase-admin": "^7.3.0", "firebase-functions": "^2.3.1",
Lorsque j'essaie d'exécuter mes fonctions à l'aide de
firebase emulators:start
Cela me donne la sortie ci-dessous. Que fais-je de mal?
Starting emulators: ["functions"]
⚠ Your requested "node" version "8" doesn't match your global version "11"
✔ functions: Emulator started at http://localhost:5001
i functions: Watching "[FUNCTIONS FOLDER PATH]" for Cloud Functions...
⚠ Default "firebase-admin" instance created!
⚠ Ignoring trigger "[FUNCTION NAME]" because the service "firebaseauth.googleapis.com" is not yet supported.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠ Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
etc.
etc.
etc.
i functions: HTTP trigger initialized at http://localhost:5001/[APP NAME]/us-central1/[FUNCTION NAME]
[2019-05-15T21:43:52.436Z] @firebase/database: FIREBASE WARNING:
{"code":"app/invalid-credential","message":"Credential implementation provided to
initializeApp() via the \"credential\" property failed to fetch a valid Google
OAuth2 access token with the following error: \"Error fetching access token: Error
while making request: getaddrinfo ENOTFOUND metadata.google.internal
metadata.google.internal:80. Error code: ENOTFOUND\"."}
J'ai eu le même problème, il y avait quelques problèmes pour moi
Mon deuxième problème était que ma configuration Firebase initiale avait installé les fichiers de configuration dans mon dossier personnel plutôt que le dossier du projet comme décrit [ici] cela signifiait donc que mon projet manquait firestore.rules et firestore.indexes. json et certains des paramètres de configuration.
lancez firebase init pour générer ces fichiers
Une fois que j'ai corrigé ces deux choses, cela a fonctionné pour moi. J'espère que ça aide.
Comme référence, mon firebase.json ressemble à ceci
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
},
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"hosting": {
"public": "dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
"emulators": {
"firestore": {
"port": "5002"
}
}
}
Si la vérification de la configuration de Firebase ne fonctionne pas, essayez ceci:
firebase emulators:start
. Vérifiez si une erreur s'affiche pour installer OpenJDK.firebase emulators:start --only functions,firestore
ou firebase serve --only functions,firestore
.Il se peut que vous n'ayez pas configuré correctement Firestore dans votre fichier firebase.json. Cela empêche l'émulateur de démarrer.
Ce dont vous avez besoin est d'exécuter firebase init firestore
dans le répertoire de votre projet. Cela créerait des règles de Firestore et des fichiers d'index et mettrait à jour votre firebase.json en conséquence.
En fait, cette erreur survient lorsque l'utilisateur initialise le projet Firebase sans base de données. La commande firebase emulators:start --only database
ne peut pas démarrer l'émulateur de base de données car il a besoin du fichier "database.rules.json" et des entrées de configuration de la base de données dans le fichier firebase.json. Donc, si vous avez oublié d'initialiser la base de données dans firebase init
alors vous pouvez ajouter la base de données firebase quand vous le souhaitez en suivant la commande CLI firebase
firebase init database
alors vous pouvez exécuter firebase emulators:start --only database
pour démarrer l'émulateur de base de données dans le serveur local.
et Si vous souhaitez utiliser l'émulateur pour la fonction et la base de données, exécutez firebase serve --only functions,database
À partir de la version 7.8.0
de l'interface CLI Firebase (firebase-tools
) il y a une nouvelle commande firebase init emulators
qui vous aidera à configurer tous les émulateurs que vous souhaitez exécuter.