Check out what’s new from Firebase at Google I/O 2022. Learn more

Uruchamiaj funkcje lokalnie

Firebase CLI zawiera emulator Cloud Functions, który może emulować następujące typy funkcji:

  • Funkcje HTTPS
  • Funkcje wywoływane
  • Funkcje działające w tle uruchamiane przez uwierzytelnianie Firebase, bazę danych czasu rzeczywistego, Cloud Firestore, Cloud Storage i Cloud Pub/Sub.

Funkcje można uruchamiać lokalnie, aby je przetestować przed wdrożeniem w środowisku produkcyjnym.

Zainstaluj Firebase CLI

Aby korzystać z emulatora Cloud Functions, najpierw zainstaluj Firebase CLI:

npm install -g firebase-tools

Aby korzystać z lokalnego emulatora, Twoje Cloud Functions muszą być zależne od:

  • firebase-admin wersji 8.0.0 lub nowszej.
  • firebase-functions wersji 3.0.0 lub nowszej.

Skonfiguruj dane logowania administratora (opcjonalnie)

Jeśli chcesz, aby testy funkcji współdziałały z interfejsami API Google lub innymi interfejsami API Firebase za pośrednictwem pakietu Firebase Admin SDK , konieczne może być skonfigurowanie danych logowania administratora.

  • Wyzwalacze Cloud Firestore i Realtime Database mają już wystarczające dane logowania i nie wymagają dodatkowej konfiguracji.
  • Wszystkie inne interfejsy API, w tym interfejsy API Firebase, takie jak uwierzytelnianie i FCM lub interfejsy Google, takie jak Cloud Translation lub Cloud Speech, wymagają czynności konfiguracyjnych opisanych w tej sekcji. Dotyczy to zarówno powłoki Cloud Functions, jak i firebase emulators:start .

Aby skonfigurować poświadczenia administratora dla emulowanych funkcji:

  1. Otwórz panel Konta usług w Google Cloud Console.
  2. Upewnij się, że wybrane jest domyślne konto usługi App Engine , i użyj menu opcji po prawej stronie, aby wybrać Utwórz klucz .
  3. Po wyświetleniu monitu wybierz JSON jako typ klucza i kliknij Utwórz .
  4. Ustaw domyślne dane logowania Google tak, aby wskazywały pobrany klucz:

    Uniksa

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

    Okna

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

Po wykonaniu tych czynności Twoje testy funkcji będą mogły uzyskiwać dostęp do interfejsów API Firebase i Google za pomocą pakietu Admin SDK . Na przykład podczas testowania wyzwalacza uwierzytelniania emulowana funkcja może wywołać admin.auth().getUserByEmail(email) .

Konfiguracja konfiguracji funkcji (opcjonalnie)

Jeśli używasz niestandardowych zmiennych konfiguracyjnych funkcji, najpierw uruchom polecenie, aby uzyskać niestandardową konfigurację (uruchom to w katalogu functions ) w środowisku lokalnym:

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

Uruchom pakiet emulatorów

Aby uruchomić emulator Cloud Functions, użyj polecenia emulators:start :

firebase emulators:start

Polecenie emulators:start uruchomi emulatory Cloud Functions, Cloud Firestore, Bazy danych czasu rzeczywistego i Hostingu Firebase w oparciu o produkty, które zainicjowałeś w lokalnym projekcie za pomocą firebase init . Jeśli chcesz uruchomić konkretny emulator, użyj flagi --only :

firebase emulators:start --only functions

Jeśli chcesz uruchomić zestaw testowy lub skrypt testowy po uruchomieniu emulatorów, użyj polecenia emulators:exec :

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

Instrumentacja aplikacji, aby rozmawiać z emulatorami

Aby zinstrumentować aplikację do interakcji z emulatorami, może być konieczne wykonanie dodatkowej konfiguracji.

Instrumentacja aplikacji pod kątem funkcji wywoływanych

Jeśli działania związane z prototypem i testami obejmują wywoływane funkcje zaplecza , skonfiguruj interakcję z emulatorem Cloud Functions for Firebase w następujący sposób:

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);
Szybki
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);

Instrumentacja aplikacji pod kątem emulacji funkcji HTTPS

Każda funkcja HTTPS w Twoim kodzie będzie obsługiwana z lokalnego emulatora przy użyciu następującego formatu adresu URL:

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

Na przykład prosta funkcja helloWorld z domyślnym portem hosta i regionem będzie obsługiwana pod adresem:

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

Instrumentacja aplikacji do emulacji funkcji wyzwalanych w tle

Emulator Cloud Functions obsługuje funkcje wyzwalane w tle z następujących źródeł:

  • Emulator bazy danych czasu rzeczywistego
  • Emulator Cloud Firestore
  • Emulator uwierzytelniania
  • Emulator Pub/Sub

Aby wyzwolić zdarzenia w tle, połącz swoją aplikację lub kod testowy z emulatorami za pomocą zestawu SDK dla swojej platformy.

Interakcje z innymi usługami

Pakiet emulatorów zawiera wiele emulatorów, które umożliwiają testowanie interakcji między produktami.

Cloud Firestore

Jeśli masz funkcje, które używają pakietu Firebase Admin SDK do zapisywania w Cloud Firestore, te zapisy będą wysyłane do emulatora Cloud Firestore, jeśli jest on uruchomiony. Jeśli kolejne funkcje zostaną wywołane przez te zapisy, zostaną one uruchomione w emulatorze Cloud Functions.

Magazyn w chmurze

Jeśli masz funkcje, które używają pakietu Firebase Admin SDK (w wersji 9.7.0 lub nowszej) do zapisywania w Cloud Storage, te zapisy zostaną wysłane do emulatora Cloud Storage, jeśli jest on uruchomiony. Jeśli kolejne funkcje zostaną wywołane przez te zapisy, zostaną one uruchomione w emulatorze Cloud Functions.

Uwierzytelnianie Firebase

Jeśli masz funkcje, które używają pakietu Firebase Admin SDK (w wersji 9.3.0 lub nowszej) do zapisu w usłudze Firebase Authentication, te zapisy zostaną wysłane do emulatora Auth, jeśli jest on uruchomiony. Jeśli kolejne funkcje zostaną wywołane przez te zapisy, zostaną one uruchomione w emulatorze Cloud Functions.

Hosting Firebase

Jeśli używasz Cloud Functions do generowania treści dynamicznych na potrzeby Hostingu firebase emulators:start używają Twoich lokalnych funkcji HTTP jako serwerów proxy na potrzeby hostingu.

Logowanie

Emulator przesyła strumieniowo logi z twoich funkcji do okna terminala, w którym są uruchomione. Wyświetla wszystkie dane wyjściowe z instrukcji console.log() , console.info() , console.error() i console.warn() wewnątrz funkcji.

Następne kroki

Aby zapoznać się z pełnym przykładem korzystania z zestawu emulatorów Firebase, zobacz przykładowy krótki start dotyczący testowania .