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\"."}
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.If checking Firebase setup doesn't work, try this:
firebase emulators:start
. Check if displayed error request to install OpenJDK.firebase emulators:start --only functions,firestore
orfirebase serve --only functions,firestore
.Keep in mind that pubsub is not suported yet.As Sam Stern comments, pub sub is now supported.I had the same issue there were a few things wrong for me
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
As of version
7.8.0
of the Firebase CLI (firebase-tools
) there is a new commandfirebase init emulators
that will help you set up all the emulators you want to run.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 infirebase init
command then you can add firebase database whenever you want by following firebase CLI commandfirebase 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