Подключите свое приложение к эмулятору облачного хранилища

Перед подключением вашего приложения к эмулятору Cloud Storage, убедитесь , что вы понимаете общий рабочий процесс Firebase Local Emulator Suite , и что вы установить и настроить локальную Emulator Suite , и пересматривать свои команды CLI .

Выберите проект Firebase

Пакет локального эмулятора Firebase эмулирует продукты для одного проекта Firebase.

Для того, чтобы выбрать проект для использования, прежде чем начать эмуляторы, в CLI выполнения firebase use в рабочем каталоге. Или, вы можете передать --project флаг каждой команды эмулятора.

Локальная Emulator люкс поддерживает эмуляцию реальных проектов Firebase и демонстрационные проекты.

Тип проекта Функции Использование с эмуляторами
Настоящий

Настоящий проект Firebase - это тот, который вы создали и настроили (скорее всего, через консоль Firebase).

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

При работе с реальными проектами Firebase вы можете запускать эмуляторы для любого или всех поддерживаемых продуктов.

Для любых продуктов , которые вы не эмулирующие, ваши приложения и код будут взаимодействовать с живым ресурсом (например , баз данных, хранением ведром, функцией и т.д.).

Демо

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

Проект идентификаторы для демонстрационных проектов имеют demo- - префикс.

При работе с демонстрационными проектами Firebase, приложениями и кода взаимодействует только с эмуляторами. Если ваше приложение пытается взаимодействовать с ресурсом, для которого не запущен эмулятор, этот код завершится ошибкой.

Мы рекомендуем вам по возможности использовать демонстрационные проекты. Преимущества включают:

  • Более простая установка, так как вы можете запускать эмуляторы, даже не создавая проект Firebase.
  • Повышенная безопасность, поскольку, если ваш код случайно вызывает неэмулированные (производственные) ресурсы, нет никаких шансов на изменение данных, использование и выставление счетов
  • Лучшая автономная поддержка, так как нет необходимости выходить в Интернет для загрузки конфигурации SDK.

Настройте свое приложение на взаимодействие с эмуляторами

Android, iOS и веб-SDK

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

Android
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
iOS - Swift
Storage.storage().useEmulator(withHost:"localhost", port:9199)
Интернет v8
var storage = firebase.storage();
storage.useEmulator("localhost", 9199);
Web v9 (бета)
import { getStorage, useStorageEmulator } from "firebase/storage";

const storage = getStorage();
useStorageEmulator(storage, "localhost", 9199);

Никакие дополнительные настройки не требуется , чтобы проверить функции Облака запускаемых событий Cloud Storage с помощью эмулятора. Когда оба эмулятора Cloud Storage и Cloud Functions работают, они автоматически работают вместе.

Административные SDK

В Firebase администратор SDKs автоматически подключаться к эмулятору Cloud Storage , когда FIREBASE_STORAGE_EMULATOR_HOST переменной среды:

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

Обратите внимание, что эмулятор облачных функций автоматически распознает эмулятор облачного хранилища, поэтому вы можете пропустить этот шаг при тестировании интеграции между облачными функциями и эмуляторами облачного хранилища. Переменная среды будет автоматически установлена ​​для Admin SDK в облачном хранилище.

При подключении к эмулятору Cloud Storage из любой другой среды вам нужно будет указать идентификатор проекта. Вы можете передать идентификатор проекта в initializeApp непосредственно или установить GCLOUD_PROJECT переменного окружение. Обратите внимание, что вам не нужно использовать ваш настоящий идентификатор проекта Firebase; эмулятор Cloud Storage будет принимать любой идентификатор проекта, если он имеет допустимый формат .

Административный SDK для Node.js
admin.initializeApp({ projectId: "your-project-id" });
Переменная среды
export GCLOUD_PROJECT="your-project-id"

Импорт и экспорт данных

Эмуляторы базы данных и облачного хранилища позволяют экспортировать данные из запущенного экземпляра эмулятора. Определите базовый набор данных для использования в ваших модульных тестах или рабочих процессах непрерывной интеграции, а затем экспортируйте его для совместного использования в команде.

firebase emulators:export ./dir

В тестах при запуске эмулятора импортируйте базовые данные.

firebase emulators:start --import=./dir

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

firebase emulators:start --import=./dir --export-on-exit

Этот импорт и экспорт данных вариантов работа с firebase emulators:exec команды , а также. Более подробную информацию , обратитесь к ссылке команды эмулятора .

Ограничения

Эмулятор облачного хранилища пытается точно воспроизвести поведение производственной службы с некоторыми заметными ограничениями:

  • Используя Admin SDK, поддерживаются только загрузка файлов, загрузка файлов и изменение метаданных файлов. Другие функциональные возможности, предоставляемые библиотеками клиента Google Cloud Storage еще не доступен.

Что дальше?

  • Для куратором множества видео и подробные инструкции к примерам, следовать Firebase Эмуляторы Training Playlist .
  • Поскольку запускаемые функции типичная интеграция с Cloud Storage, узнать больше о функциях Cloud для Firebase эмулятора на функции Run локально .