web-dev-qa-db-fra.com

L'émulateur Firestore / Firebase ne fonctionne pas

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\"."} 
12
siefix

J'ai eu le même problème, il y avait quelques problèmes pour moi

  1. assurez-vous que l'émulateur est installé en exécutant la configuration Firebase: émulateurs: firestore

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"
    }
  }
}
15
Azure

Si la vérification de la configuration de Firebase ne fonctionne pas, essayez ceci:

  • Courir firebase emulators:start. Vérifiez si une erreur s'affiche pour installer OpenJDK.
  • Si vos fonctions interagissent avec les API Firebase ou Google API, vous devez configurer les informations d'identification d'administrateur. Vérifiez comment le faire ici: https://firebase.google.com/docs/functions/local-emulator
  • Il se peut que vous deviez émuler des fonctions et créer un pare-feu en même temps. Utilisation firebase emulators:start --only functions,firestore ou firebase serve --only functions,firestore.
  • Gardez à l'esprit que pubsub n'est pas encore supporté. Comme le fait remarquer Sam Stern, le pub sub est désormais pris en charge.
10
Mario Orozco

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.

4
nikitakarpenkov

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

1
N.Balgopal Patro

À 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.

1
Sam Stern