简体   繁体   中英

Firestore/Firebase Emulator Not Running

I'm trying to test my functions locally using the guide listed here https://firebase.google.com/docs/functions/local-emulator

I have installed the latest firebase-tools using

npm install -g firebase-tools

In my package.json I confirmed to be running

"firebase-admin": "^7.3.0", "firebase-functions": "^2.3.1",

When I try to run my functions using

firebase emulators:start

It gives me the below output. What am I doing wrong?

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

I had the same issue there were a few things wrong for me

  1. ensure the emulator is installed by running firebase setup:emulators:firestore

My second issue was that my initial firebase configuration had installed the config files into my home folder rather then the project folder as described [here] this meant so my project was missing firestore.rules and firestore.indexes.json and some of the configuration settings.

run firebase init to generate these files

Once I fixed these two things it worked for me. I hope this helps.

As a reference my firebase.json looks like this

{
  "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"
    }
  }
}

If checking Firebase setup doesn't work, try this:

  • Run firebase emulators:start . Check if displayed error request to install OpenJDK.
  • If your functions interacts with Firebase APIs or Google APIs, you need to setup admin credentials. Check how to do it here: https://firebase.google.com/docs/functions/local-emulator
  • You may need to emulate functions and firestore at the same time. Use firebase emulators:start --only functions,firestore or firebase serve --only functions,firestore .
  • Keep in mind that pubsub is not suported yet. As Sam Stern comments, pub sub is now supported.

Could be you don't have firestore configured properly in your firebase.json file. This makes emulator not being started.

What you need is to run firebase init firestore in your project directory. This would create firestore rules and indexes files and update your firebase.json correspondingly.

从 Firebase CLI ( firebase-tools ) 7.8.0版本开始,有一个新命令firebase init emulators可以帮助您设置要运行的所有模拟器。

Actually this error comes when the user initialize the firebase project without database. So the command firebase emulators:start --only database can not start the database emulator because it need the "database.rules.json" file and the configuration entries for database in the firebase.json file . So if you forgot to initialize the database in firebase init command then you can add firebase database whenever you want by following firebase CLI command

firebase init database

then you can run firebase emulators:start --only database for starting the database emulator in the localserver .

and If you want to use emulator for both function and database then run firebase serve --only functions,database

Simple fix

  1. Check you have latest firebase-tools (8.x)
  2. Add an empty firestore configuration to firebase.json
{
  "functions": {
    ...
  },
  "firestore": {}
}

This will tell firebase-tools to initialize and run the firestore emulator.

在此处输入图片说明

For me after installing th java runtime , everything worked perfectly.

install java runtime

Also came across this issue, I was importing data, but I was in the wrong directory, simple fix. Hope this may help someone as error output gives no indication.

Original command:

firebase emulators:start --import ./firebaseexport

Error:

i  emulators: Starting emulators: functions, firestore, hosting
i  emulators: Shutting down emulators.
i  hub: Stopping emulator hub

Error: An unexpected error has occurred.

Fix:

firebase emulators:start --import ./functions/firebaseexport

In the firebase.json file Change host for firestore from

"host": "http://localhost"

(which is created during the firebase init command) to

"host": "localhost"

Doing this fixes the problem and the firestore emulator runs.

Elaboration: firebase version 9.16.0

With the firebase.json snippet

{
        // ...
        "emulators": {
          "firestore": {
            "host": "http://localhost",
            "port": "8081"
          }
        }
      }

The emulator would stop with:

firebase emulators:start --only firestore
i  emulators: Starting emulators: firestore
i  emulators: Shutting down emulators.
i  hub: Stopping emulator hub
⚠  firestore: Port 8081 is not open on http://localhost, could not start Firestore Emulator.
⚠  firestore: To select a different host/port, specify that host/port in a firebase.json config file:
      {
        // ...
        "emulators": {
          "firestore": {
            "host": "HOST",
            "port": "PORT"
          }
        }
      }
i  emulators: Shutting down emulators.

Error: Could not start Firestore Emulator, port taken.

But when "http:localhost" is changed to "localhost", then it works (the error message is missleading)..

The key was (in debug mode) the line

port check error: Error: getaddrinfo ENOTFOUND http://localhost

one suggestion in another link was to check /etc/hosts, but a simplier fix was to get rid of the "http://" part.

I fixed it by doing

  1. firebase init

select the things you need using space key Then after finish

  1. firebase emulators:start

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM