Эмулятор Firestore / Firebase не работает

Я пытаюсь протестировать свои функции локально, используя приведенное здесь руководство https://firebase.google.com/docs/functions/local-emulator.

Я установил последние инструменты firebase, используя

npm install -g firebase-tools

В моем package.json я подтвердил, что запущен

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

Когда я пытаюсь запустить свои функции, используя

firebase emulators:start

Это дает мне следующий результат. Что я делаю не так?

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

person siefix    schedule 15.05.2019    source источник
comment
Пожалуйста, ограничьте себя одним вопросом в сообщении. В нынешнем виде вы спрашиваете о двух не связанных между собой вещах. Если у вас есть шаги по воспроизведению чего-то, что выглядит как ошибка в эмуляторе, опубликуйте проект на GitHub вместо Stack Overflow. github.com/firebase/firebase-tools   -  person Doug Stevenson    schedule 16.05.2019
comment
Удалено несвязанное, хотя это часть предупреждающих сообщений, отображаемых в выводе .....   -  person siefix    schedule 16.05.2019
comment
И я не знаю, ошибка ли это, вот в чем смысл задавать этот вопрос, Дуг. Нет никаких шагов воспроизведения, за исключением единственного кода командной строки firebase emulators:start, который является единственным, что говорится в руководстве. Было бы здорово, если бы Firebase улучшила свою документацию в этой области.   -  person siefix    schedule 16.05.2019
comment
На этапах воспроизведения обязательно будет сказано все, что можно сделать, чтобы перейти в это состояние, включая отображение любого используемого кода. Желательно минимальное количество кода, вызывающего проблему, чтобы людям не приходилось пытаться обрабатывать больше кода, чем необходимо. Инженеры, создавшие эмулятор, скорее обратят внимание на проблему GitHub, чем на переполнение стека.   -  person Doug Stevenson    schedule 16.05.2019
comment
У меня 37 функций, которые отлично работают при развертывании в облачной среде. При локальном запуске с использованием приведенного выше руководства все происходит с ошибками, как показано выше. Попробую проект на github   -  person siefix    schedule 16.05.2019
comment
Пожалуйста, сделай. В новом эмуляторе определенно есть ошибки. Я не видел ни одного из этих сообщений, но вы можете перейти на 6.8.0 до того, как будут внесены все большие изменения.   -  person Doug Stevenson    schedule 16.05.2019
comment
Может быть, также взгляните на этот подход: tianhaoz.com/eng/server /firebase/emulator.html#cloud-functions и github.com/tianhaoz95/iwfp/blob/master/functions/   -  person Tianhao Zhou    schedule 18.04.2020
comment
@DougStevenson Мои эмуляторы работают нормально. Но когда я отправляю запрос, он возвращает нулевые данные. Есть идеи, почему? Я использую firestore, функции и эмулятор базы данных. Я также попробовал изменить правила базы данных.   -  person Lokesh Pandey    schedule 25.04.2020


Ответы (8)


У меня была та же проблема, со мной было что-то не так

  1. убедитесь, что эмулятор установлен, запустив firebase setup:emulators:firestore

Моя вторая проблема заключалась в том, что моя первоначальная конфигурация firebase установила файлы конфигурации в мою домашнюю папку, а не в папку проекта, как описано [здесь] это означало, что в моем проекте отсутствовали firestore.rules и firestore.indexes.json, а также некоторые параметры конфигурации.

запустите firebase init, чтобы сгенерировать эти файлы

Как только я исправил эти две вещи, у меня все заработало. Надеюсь, это поможет.

В качестве справки мой firebase.json выглядит так

{
  "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"
    }
  }
}
person Azure    schedule 21.05.2019
comment
Запуск firebase init устранил проблему. С другой стороны, я только что создал новую папку для функций и запустил init. Странно, что мне пришлось запустить его снова, разве firebase не знала, что я изначально использую firestore и функции вместе? : - / - person Aswin Kumar; 29.05.2019
comment
Согласен с @AswinKumar - person Maslow; 07.06.2019
comment
firebase init у меня не работает. firebase init firestore реши мою проблему. - person Abdullah Khan; 07.04.2020

Если проверка настройки Firebase не работает, попробуйте следующее:

  • Запустите firebase emulators:start. Проверьте, отображается ли запрос об ошибке для установки OpenJDK.
  • Если ваши функции взаимодействуют с API Firebase или Google API, вам необходимо настроить учетные данные администратора. Узнайте, как это сделать, здесь: https://firebase.google.com/docs/functions/local-emulator
  • Возможно, вам понадобится эмулировать функции и хранилище огня одновременно. Используйте firebase emulators:start --only functions,firestore или firebase serve --only functions,firestore.
  • Имейте в виду, что pubsub пока не поддерживается. Как комментирует Сэм Стерн, pub sub теперь поддерживается.
person Mario Orozco    schedule 15.06.2019
comment
Фактически pubsub поддерживается в последней версии (7.9.0) - person Sam Stern; 13.12.2019
comment
Я получаю rror: functions firestore не является допустимым именем эмулятора, допустимые параметры: [auth, functions, firestore, database, hosting, pubsub] при использовании эмуляторов firebase: start --only functions, firestore - person Paulo Busato Favarato; 31.10.2020

Возможно, в вашем файле firebase.json неправильно настроен firestore. Это делает эмулятор не запускаемым.

Вам нужно запустить firebase init firestore в каталоге вашего проекта. Это создаст правила firestore и файлы индексов и, соответственно, обновит ваш firebase.json.

person nikitakarpenkov    schedule 27.05.2019
comment
Я использовал firebase init database для базы данных в реальном времени - person Rami Alloush; 06.11.2019

Начиная с версии 7.8.0 интерфейса командной строки Firebase (firebase-tools) есть новая команда firebase init emulators, которая поможет вам настроить все эмуляторы, которые вы хотите запустить.

person Sam Stern    schedule 13.12.2019
comment
Это ключ! Спасибо, Сэм, за указание. Похоже, я нигде не нашел об этом. Если не добавлено, было бы здорово, если бы вы могли добавить в документацию. - person Ayyappa; 05.03.2020

На самом деле эта ошибка возникает, когда пользователь инициализирует проект firebase без базы данных. Таким образом, команда firebase emulators:start --only database не может запустить эмулятор базы данных, потому что ей нужен файл «database.rules.json» и записи конфигурации для базы данных в файле firebase.json. Поэтому, если вы забыли инициализировать базу данных в команде firebase init, вы можете добавить базу данных firebase в любое время, выполнив команду CLI firebase

firebase init database

тогда вы можете запустить firebase emulators:start --only database для запуска эмулятора базы данных на локальном сервере.

и если вы хотите использовать эмулятор как для функции, так и для базы данных, запустите firebase serve --only functions,database

person N.Balgopal Patro    schedule 31.03.2020

Простое решение

  1. Убедитесь, что у вас установлена ​​последняя версия firebase-tools (8.x)
  2. Добавьте пустую конфигурацию firestore в firebase.json
{
  "functions": {
    ...
  },
  "firestore": {}
}

Это укажет firebase-tools на инициализацию и запуск эмулятора хранилища огня.

введите описание изображения здесь

person Ben Winding    schedule 01.12.2020

Для меня после установки среды выполнения java все работало отлично.

установить среду выполнения Java

person jcmargentina    schedule 28.03.2021

Также столкнулся с этой проблемой, я импортировал данные, но был в неправильном каталоге, простое исправление. Надеюсь, это может кому-то помочь, поскольку вывод ошибок не дает никаких указаний.

Исходная команда:

firebase emulators:start --import ./firebaseexport

Ошибка:

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

Error: An unexpected error has occurred.

Исправить:

firebase emulators:start --import ./functions/firebaseexport
person Jackson Lee    schedule 27.05.2021