Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Запускать функции локально

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

  • HTTPS-функции
  • Вызываемые функции
  • Фоновые функции, запускаемые аутентификацией Firebase, базой данных в реальном времени, облачным хранилищем Firestore, облачным хранилищем и облачным Pub/Sub.

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

Установите интерфейс командной строки Firebase

Чтобы использовать эмулятор Cloud Functions, сначала установите интерфейс командной строки Firebase:

npm install -g firebase-tools

Чтобы использовать локальный эмулятор, ваши облачные функции должны зависеть от:

  • firebase-admin версии 8.0.0 или выше.
  • firebase-functions версии 3.0.0 или выше.

Настройте учетные данные администратора (необязательно)

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

  • Триггеры Cloud Firestore и Realtime Database уже имеют достаточные учетные данные и не требуют дополнительной настройки.
  • Все остальные API, включая API Firebase, такие как Authentication и FCM, или API Google, такие как Cloud Translation или Cloud Speech, требуют действий по настройке, описанных в этом разделе. Это применимо независимо от того, используете ли вы оболочку Cloud Functions или firebase emulators:start .

Чтобы настроить учетные данные администратора для эмулируемых функций:

  1. Откройте панель «Учетные записи служб » в Google Cloud Console.
  2. Убедитесь, что выбрана учетная запись службы App Engine по умолчанию , и используйте меню параметров справа, чтобы выбрать Создать ключ .
  3. При появлении запроса выберите JSON в качестве типа ключа и нажмите « Создать ».
  4. Установите учетные данные Google по умолчанию, чтобы они указывали на загруженный ключ:

    Юникс

    export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    firebase emulators:start
    

    Окна

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase emulators:start
    

После выполнения этих шагов ваши тесты функций могут получить доступ к Firebase и Google API с помощью Admin SDK . Например, при тестировании триггера аутентификации эмулируемая функция может вызвать admin.auth().getUserByEmail(email) .

Настройка конфигурации функций (опционально)

Если вы используете переменные конфигурации пользовательских функций, сначала запустите команду, чтобы получить свою пользовательскую конфигурацию (запустите ее в каталоге functions ) в вашей локальной среде:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Запустите набор эмуляторов

Чтобы запустить эмулятор Cloud Functions, используйте команду emulators:start :

firebase emulators:start

Команда emulators:start запустит эмуляторы для облачных функций, облачного хранилища Firestore, базы данных реального времени и хостинга Firebase на основе продуктов, которые вы инициализировали в своем локальном проекте с помощью firebase init . Если вы хотите запустить конкретный эмулятор, используйте флаг --only :

firebase emulators:start --only functions

Если вы хотите запустить набор тестов или сценарий тестирования после запуска эмуляторов, используйте команду emulators:exec :

firebase emulators:exec "./my-test.sh"

Инструментируйте свое приложение для общения с эмуляторами

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

Инструментируйте ваше приложение для вызываемых функций

Если ваш прототип и тестовые действия включают вызываемые серверные функции , настройте взаимодействие с эмулятором Cloud Functions for Firebase следующим образом:

Андроид
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFunctions functions = FirebaseFunctions.getInstance();
functions.useEmulator("10.0.2.2", 5001);
Быстрый
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Web version 8

firebase.functions().useEmulator("localhost", 5001);

Инструментируйте ваше приложение для эмуляции функций HTTPS

Каждая функция HTTPS в вашем коде будет обслуживаться локальным эмулятором с использованием следующего формата URL:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

Например, простая функция helloWorld с портом хоста и регионом по умолчанию будет обслуживаться по адресу:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

Инструментируйте свое приложение для эмуляции фоновых функций

Эмулятор Cloud Functions поддерживает фоновые функции из следующих источников:

  • Эмулятор базы данных в реальном времени
  • Эмулятор облачного хранилища Firestore
  • Эмулятор аутентификации
  • Эмулятор паб/саб

Чтобы инициировать фоновые события, измените внутренние ресурсы с помощью пользовательского интерфейса Emulator Suite или подключив свое приложение или тестовый код к эмуляторам с помощью SDK для вашей платформы.

Обработчики тестов для пользовательских событий, создаваемых расширениями

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

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

Среда выполнения облачных функций задает для переменной среды EVENTARC_EMULATOR значение localhost:9299 в текущем процессе, если запущен эмулятор Eventarc. Пакеты Firebase Admin SDK автоматически подключаются к эмулятору Eventarc, когда установлена ​​переменная среды EVENTARC_EMULATOR . Вы можете изменить порт по умолчанию, как описано в разделе « Настройка локального эмулятора» .

Когда переменные среды правильно настроены, Firebase Admin SDK автоматически отправляет события в эмулятор Eventarc. В свою очередь, эмулятор Eventarc выполняет обратный вызов эмулятору Cloud Functions, чтобы активировать любые зарегистрированные обработчики.

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

Взаимодействие с другими сервисами

Набор эмуляторов включает в себя несколько эмуляторов, которые позволяют тестировать взаимодействие между продуктами.

Облако Firestore

Если у вас есть функции, которые используют Firebase Admin SDK для записи в Cloud Firestore, эти записи будут отправлены в эмулятор Cloud Firestore, если он запущен. Если эти записи запустят дополнительные функции, они будут запущены в эмуляторе Cloud Functions.

Облачное хранилище

Если у вас есть функции, которые используют Firebase Admin SDK (версия 9.7.0 или выше) для записи в облачное хранилище, эти записи будут отправлены в эмулятор облачного хранилища, если он запущен. Если эти записи запустят дополнительные функции, они будут запущены в эмуляторе Cloud Functions.

Аутентификация Firebase

Если у вас есть функции, использующие Firebase Admin SDK (версия 9.3.0 или выше) для записи в Firebase Authentication, эти записи будут отправлены в эмулятор аутентификации, если он запущен. Если эти записи запустят дополнительные функции, они будут запущены в эмуляторе Cloud Functions.

Хостинг Firebase

Если вы используете облачные функции для создания динамического контента для хостинга Firebase , firebase emulators:start используют ваши локальные HTTP-функции в качестве прокси для хостинга.

логирование

Эмулятор передает журналы ваших функций в окно терминала, где они запускаются. Он отображает все выходные console.log() , console.info() , console.error() и console.warn() внутри ваших функций.

Следующие шаги

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