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

Uruchamiaj funkcje lokalnie

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

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 Firebase API, 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ługi 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 kroków 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 prototypowe i testowe obejmują wywoływane funkcje backendu , skonfiguruj interakcję z emulatorem Cloud Functions dla Firebase w ten 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, zmodyfikuj zasoby zaplecza za pomocą interfejsu użytkownika pakietu emulatorów lub łącząc aplikację lub kod testowy z emulatorami przy użyciu zestawu SDK dla swojej platformy.

Testy obsługi zdarzeń niestandardowych emitowanych przez rozszerzenia

W przypadku funkcji, które zaimplementujesz w celu obsługi niestandardowych zdarzeń rozszerzeń Firebase za pomocą Cloud Functions v2, emulator Cloud Functions łączy się z emulatorem Eventarc, aby obsługiwać wyzwalacze Eventarc .

Aby przetestować niestandardowe programy obsługi zdarzeń pod kątem rozszerzeń, które emitują zdarzenia, musisz zainstalować emulatory Cloud Functions i Eventarc.

Środowisko wykonawcze Cloud Functions ustawia zmienną środowiskową EVENTARC_EMULATOR na localhost:9299 w bieżącym procesie, jeśli emulator Eventarc jest uruchomiony. Zestawy SDK Firebase Admin automatycznie łączą się z emulatorem Eventarc, gdy ustawiona jest zmienna środowiskowa EVENTARC_EMULATOR . Możesz zmodyfikować domyślny port, jak omówiono w sekcji Konfigurowanie lokalnego pakietu emulatorów .

Gdy zmienne środowiskowe są poprawnie skonfigurowane, pakiet Firebase Admin SDK automatycznie wysyła zdarzenia do emulatora Eventarc. Z kolei emulator Eventarc wykonuje wywołanie zwrotne do emulatora Cloud Functions, aby wyzwolić wszystkie zarejestrowane programy obsługi.

Możesz sprawdzić dzienniki funkcji w interfejsie użytkownika pakietu emulatorów, aby uzyskać szczegółowe informacje na temat wykonywania procedury obsługi.

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 uruchomionego emulatora Cloud Firestore. 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 będą wysył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 zapisywania w Uwierzytelnianiu Firebase, 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 dzienniki z funkcji do okna terminala, w którym są uruchamiane. 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 .