Невозможно запустить функции firebase на локальном хосте с помощью эмулятора firebase: start - PullRequest
1 голос
/ 29 июня 2019

Я пытаюсь протестировать свои облачные функции google firebase на локальном компьютере с помощью эмулятора firebase: запуск.Однако локальный экземпляр облачной функции не выполняется, вместо этого выполняется экземпляр в Google Cloud.

Я выполнил следующие шаги для настройки эмулятора: https://firebase.google.com/docs/functions/local-emulator

$ export GOOGLE_APPLICATION_CREDENTIALS='path/tofile'
$ firebase setup:emulators:firestore
$ firebase init firestore
$ export FIRESTORE_EMULATOR_HOST=localhost:8080
$ firebase emulators:start
 Starting emulators: ["functions","firestore","hosting"]
⚠  Your requested "node" version "8" doesn't match your global version "10"
✔  functions: Emulator started at http://localhost:5001
i  firestore: Logging to firestore-debug.log
✔  firestore: Emulator started at http://localhost:8080
i  firestore: For testing set FIRESTORE_EMULATOR_HOST=localhost:8080
✔  hosting: Emulator started at http://localhost:5000
i  hosting: Serving hosting files from: www
✔  hosting: Local server: http://localhost:5000
i  functions: Watching "/home/borch/Documents/Ionic/myproject/functions" for Cloud Functions...
i  functions: Setting up Cloud Firestore trigger "myGCFunction"
✔  functions: Trigger "myGCFunction" has been acknowledged by the Cloud Firestore emulator.

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

Но функции, которые выполняются каждый раз, когда я вызываю myGCFunction, - это функции в Google Cloud.Я думаю, что он должен выполнять функцию из моего локального API, работающего на localhost: 8080, правильно?

Я понимаю, что выполняется только функция в облаке, потому что я проверил консоль функции firebase с новыми записями выполнения этой функции,

Я обновил firebase-admin и firebase-functions до последней версии:

$ cat functions/package.json | grep firebase-
    "firebase-admin": "^8.2.0",
    "firebase-functions": "^3.0.2",

Спасибо.

1 Ответ

1 голос
/ 29 июня 2019

Локальный эмулятор не собирается реагировать на изменения в облаке. Вы должны фактически изменить локально эмулируемую базу данных, чтобы запускать локально эмулируемые функции.

(Представьте себе, если вы случайно запустили локальный эмулятор, который реагировал на изменения в занятой производственной базе данных - это плохо масштабировалось бы на вашем локальном компьютере, не так ли? Локальная среда должна быть полностью изолирована от любой среды, размещенной в облаке, чтобы работать вменяемым.)

...