Создавайте прототипы и тестируйте веб-приложения с помощью эмулятора хостинга 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.

Чтобы выбрать проект, перед запуском эмуляторов выполните в командной строке 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 Hosting, то для запуска firebase emulators:exec вам потребуется войти в систему с помощью токена. Для других эмуляторов вход в систему не требуется.

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

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

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

Что дальше?