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

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

Вы также должны быть знакомы с функциями и рабочим процессом реализации Firebase Hosting . Начните со знакомства с Firebase Hosting .

Что я могу делать с помощью эмулятора Firebase Hosting ?

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

  • Создавайте прототипы статических сайтов и веб-приложений без необходимости платить за хранение или доступ.
  • Прототипируйте, тестируйте и отлаживайте функции HTTPS перед развертыванием на своем хостинге.
  • Тестируйте сайты и веб-приложения в контейнерных рабочих процессах непрерывной интеграции.

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

Firebase Local Emulator Suite эмулирует продукты для одного проекта Firebase.

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

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

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

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

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

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

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

Демо

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

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

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

Мы рекомендуем вам использовать демо-проекты везде, где это возможно. Преимущества включают в себя:

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

Основной рабочий процесс прототипирования

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

  1. (Необязательно) По умолчанию ваше локально размещенное приложение будет взаимодействовать с реальными , а не эмулируемыми ресурсами проекта (функциями, базой данных, правилами и т. д.). Вместо этого вы можете при необходимости подключить свое приложение, чтобы использовать любые настроенные вами эмулируемые ресурсы проекта. Узнайте больше: Realtime Database | Cloud Firestore | Cloud Functions

  2. Из корня локального каталога проекта выполните следующую команду:

    firebase emulators:start
  3. Откройте веб-приложение по локальному URL-адресу, возвращенному CLI (обычно http://localhost:5000 ).

  4. Чтобы обновить локальный URL-адрес с изменениями, обновите браузер.

Тестирование с других локальных устройств

По умолчанию эмуляторы отвечают только на запросы от localhost . Это означает, что вы сможете получить доступ к размещенному контенту через веб-браузер вашего компьютера, но не с других устройств в вашей сети. Если вы хотите протестировать с других локальных устройств, настройте firebase.json следующим образом:

"emulators": {
    // ...

    "hosting": {
      "port": 5000,
      "host": "0.0.0.0"
    }
  }

Генерируйте токены аутентификации для рабочих процессов непрерывной интеграции.

Если ваши рабочие процессы непрерывной интеграции основаны на хостинге Firebase, вам потребуется войти в систему с помощью токена, чтобы запустить firebase emulators:exec . Другие эмуляторы не требуют входа в систему.

Чтобы сгенерировать токен, запустите firebase login:ci в своей локальной среде; это не следует выполнять из системы CI. Следуйте инструкциям для аутентификации. Вам нужно будет выполнить этот шаг только один раз для каждого проекта, поскольку токен будет действителен для всех сборок. Токен следует рассматривать как пароль; убедитесь, что это хранится в секрете.

Если ваша среда CI позволяет вам указывать переменные среды, которые можно использовать в сценариях сборки, просто создайте переменную среды с именем FIREBASE_TOKEN , значением которой будет строка токена доступа. Интерфейс командной строки Firebase автоматически получит переменную среды FIREBASE_TOKEN , и эмуляторы запустятся правильно.

В крайнем случае, вы можете просто включить токен в свой сценарий сборки, но убедитесь, что посторонние лица не имеют доступа. Для этого жестко запрограммированного подхода вы можете добавить --token "YOUR_TOKEN_STRING_HERE" к команде firebase emulators:exec .

Что дальше?