Мы настроили Firebase Emulator Suite для эмуляции функций Firebase и локального хранилища файлов . Проблема в том, что локально выполняемые функции вызывают удаленное хранилище пожаров вместо локального хранилища пожаров. Как мы можем заставить Функции вызывать локальное хранилище пожаров? Это результат выполнения firebase emulators:start
.
i Starting emulators: ["functions","firestore"]
? functions: Using node@8 from host.
? functions: Emulator started at http://localhost:5000
i functions: Beginning execution of "api"
i firestore: Serving ALL traffic (including WebChannel) on http://localhost:8080
? firestore: Support for WebChannel on a separate port (8081) is DEPRECATED and will go away soon. Please use port above instead.
i firestore: Emulator logging to firestore-debug.log
? firestore: Emulator started at http://localhost:8080
i firestore: For testing set FIRESTORE_EMULATOR_HOST=localhost:8080
i functions: Watching "/mnt/c/dev/myApp" for Cloud Functions...
i functions: Finished "api" in ~1s
i functions: Beginning execution of "api"
? functions[api]: http function initialized (http://localhost:5000/myApp/us-central1/api).
? All emulators started, it is now safe to connect.
Мы знаем, что функции попадают в удаленный Firestore, потому что мы видим данные удаленного Firestore в нашем приложении, и потому что функции не будут работать, еслимы устанавливаем переменную среды GOOGLE_APPLICATION_CREDENTIALS
.
В документации сказано:
Если у вас есть облачные функции, которые используют Firebase Admin SDK для записи в Cloud Firestore, эти записи будут отправлены в эмулятор Cloud Firestore, если он работает .
Почему наши функции отправляют запросы в удаленное облачное хранилище Firestore вместо локально эмулируемого Firestore? Как мы можем использовать вместо этого локально эмулированный Firestore?