Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

Установите Firebase CLI

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

npm install -g firebase-tools

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

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

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

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

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

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

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

    Unix

    $ 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 , с помощью администратора 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 эмулятора, использовать emulators:start команды:

firebase emulators:start

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

firebase emulators:start --only functions

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

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

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

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

Настройте свое приложение на вызываемые функции

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

Android
        // 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")

Веб-версия 9

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

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

Веб-версия 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 поддерживает запускаемые в фоновом режиме функции из следующих источников:

  • Эмулятор базы данных в реальном времени
  • Эмулятор Cloud Firestore
  • Эмулятор аутентификации
  • Эмулятор Pub / Sub

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

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

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

Cloud Firestore

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

Хостинг Firebase

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

логирование

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

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

Для полного примера использования эмулятора набора Firebase см тестирования образца QuickStart .