Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Funktionen lokal ausführen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Die Firebase CLI enthält einen Cloud Functions-Emulator, der die folgenden Funktionstypen emulieren kann:

  • HTTPS-Funktionen
  • Aufrufbare Funktionen
  • Hintergrundfunktionen, die von Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage und Cloud Pub/Sub ausgelöst werden.

Sie können Funktionen lokal ausführen, um sie zu testen, bevor Sie sie in der Produktion bereitstellen.

Installieren Sie die Firebase-CLI

Um den Cloud Functions-Emulator zu verwenden, installieren Sie zuerst die Firebase-Befehlszeilenschnittstelle:

npm install -g firebase-tools

Um den lokalen Emulator verwenden zu können, müssen Ihre Cloud-Funktionen von Folgendem abhängen:

  • firebase-admin Version 8.0.0 oder höher.
  • firebase-functions Version 3.0.0 oder höher.

Administratoranmeldeinformationen einrichten (optional)

Wenn Sie möchten, dass Ihre Funktionstests über das Firebase Admin SDK mit Google-APIs oder anderen Firebase-APIs interagieren, müssen Sie möglicherweise Administratoranmeldeinformationen einrichten.

  • Cloud Firestore- und Realtime Database-Trigger verfügen bereits über ausreichende Anmeldeinformationen und erfordern keine zusätzliche Einrichtung.
  • Alle anderen APIs, einschließlich Firebase-APIs wie Authentifizierung und FCM oder Google-APIs wie Cloud Translation oder Cloud Speech, erfordern die in diesem Abschnitt beschriebenen Einrichtungsschritte. Dies gilt unabhängig davon, ob Sie die Cloud Functions-Shell oder firebase emulators:start .

So richten Sie Administratoranmeldeinformationen für emulierte Funktionen ein:

  1. Öffnen Sie den Bereich Dienstkonten der Google Cloud Console.
  2. Stellen Sie sicher, dass das App Engine-Standarddienstkonto ausgewählt ist, und verwenden Sie das Optionsmenü rechts, um Schlüssel erstellen auszuwählen.
  3. Wählen Sie bei Aufforderung JSON als Schlüsseltyp aus und klicken Sie auf Erstellen .
  4. Legen Sie Ihre Google-Standardanmeldeinformationen so fest, dass sie auf den heruntergeladenen Schlüssel verweisen:

    Unix

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

    Windows

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

Nachdem Sie diese Schritte ausgeführt haben, können Ihre Funktionstests mithilfe des Admin SDK auf Firebase- und Google-APIs zugreifen. Beim Testen eines Authentifizierungstriggers könnte die emulierte Funktion beispielsweise admin.auth().getUserByEmail(email) .

Konfiguration der Funktionen einrichten (optional)

Wenn Sie Konfigurationsvariablen für benutzerdefinierte Funktionen verwenden, führen Sie zuerst den Befehl aus, um Ihre benutzerdefinierte Konfiguration (im functions auszuführen) in Ihrer lokalen Umgebung abzurufen:

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

Führen Sie die Emulator-Suite aus

Verwenden Sie zum Ausführen des Cloud Functions-Emulators den Befehl emulators:start :

firebase emulators:start

Der Befehl emulators:start startet Emulatoren für Cloud Functions, Cloud Firestore, Realtime Database und Firebase Hosting basierend auf den Produkten, die Sie in Ihrem lokalen Projekt mit firebase init initialisiert haben. Wenn Sie einen bestimmten Emulator starten möchten, verwenden Sie das Flag --only :

firebase emulators:start --only functions

Wenn Sie eine Testsuite oder ein Testskript ausführen möchten, nachdem die Emulatoren gestartet wurden, verwenden Sie den Befehl emulators:exec :

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

Instrumentieren Sie Ihre App, um mit den Emulatoren zu kommunizieren

Um Ihre App für die Interaktion mit den Emulatoren zu instrumentieren, müssen Sie möglicherweise einige zusätzliche Konfigurationen vornehmen.

Instrumentieren Sie Ihre App für aufrufbare Funktionen

Wenn Ihre Prototyp- und Testaktivitäten aufrufbare Back-End-Funktionen umfassen , konfigurieren Sie die Interaktion mit dem Cloud Functions for Firebase-Emulator wie folgt:

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

Instrumentieren Sie Ihre App für die Emulation von HTTPS-Funktionen

Jede HTTPS-Funktion in Ihrem Code wird vom lokalen Emulator unter Verwendung des folgenden URL-Formats bereitgestellt:

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

Beispielsweise würde eine einfache helloWorld Funktion mit dem standardmäßigen Host-Port und der standardmäßigen Region bereitgestellt werden unter:

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

Instrumentieren Sie Ihre App für die Emulation von Funktionen, die vom Hintergrund ausgelöst werden

Der Cloud Functions-Emulator unterstützt vom Hintergrund ausgelöste Funktionen aus den folgenden Quellen:

  • Echtzeit-Datenbank-Emulator
  • Cloud Firestore-Emulator
  • Authentifizierungsemulator
  • Pub/Sub-Emulator

Ändern Sie zum Auslösen von Hintergrundereignissen Backend-Ressourcen mithilfe der Benutzeroberfläche der Emulator Suite oder indem Sie Ihre App oder Ihren Testcode mithilfe des SDK für Ihre Plattform mit den Emulatoren verbinden.

Testhandler für benutzerdefinierte Ereignisse, die von Erweiterungen ausgegeben werden

Für Funktionen, die Sie implementieren, um benutzerdefinierte Ereignisse von Firebase Extensions mit Cloud Functions v2 zu verarbeiten, wird der Cloud Functions-Emulator mit dem Eventarc-Emulator gekoppelt, um Eventarc-Trigger zu unterstützen .

Um benutzerdefinierte Ereignishandler für Erweiterungen zu testen, die Ereignisse ausgeben, müssen Sie die Cloud Functions- und Eventarc-Emulatoren installieren.

Die Cloud Functions-Laufzeit legt die Umgebungsvariable EVENTARC_EMULATOR im aktuellen Prozess auf localhost:9299 9299 fest, wenn der Eventarc-Emulator ausgeführt wird. Die Firebase Admin SDKs stellen automatisch eine Verbindung zum Eventarc-Emulator her, wenn die Umgebungsvariable EVENTARC_EMULATOR festgelegt ist. Sie können den Standardport wie unter Lokale Emulator-Suite konfigurieren beschrieben ändern.

Wenn Umgebungsvariablen richtig konfiguriert sind, sendet das Firebase Admin SDK automatisch Ereignisse an den Eventarc-Emulator. Der Eventarc-Emulator ruft wiederum den Cloud Functions-Emulator auf, um alle registrierten Handler auszulösen.

Sie können die Funktionsprotokolle in der Benutzeroberfläche der Emulator Suite auf Details zur Handler-Ausführung überprüfen.

Interaktionen mit anderen Diensten

Die Emulator-Suite umfasst mehrere Emulatoren, die das Testen von produktübergreifenden Interaktionen ermöglichen.

Cloud-Firestore

Wenn Sie Funktionen haben, die das Firebase Admin SDK verwenden, um in Cloud Firestore zu schreiben, werden diese Schreibvorgänge an den Cloud Firestore-Emulator gesendet, sofern dieser ausgeführt wird. Wenn durch diese Schreibvorgänge weitere Funktionen ausgelöst werden, werden sie im Cloud Functions-Emulator ausgeführt.

Cloud-Speicher

Wenn Sie Funktionen haben, die das Firebase Admin SDK (Version 9.7.0 oder höher) verwenden, um in Cloud Storage zu schreiben, werden diese Schreibvorgänge an den Cloud Storage-Emulator gesendet, sofern dieser ausgeführt wird. Wenn durch diese Schreibvorgänge weitere Funktionen ausgelöst werden, werden sie im Cloud Functions-Emulator ausgeführt.

Firebase-Authentifizierung

Wenn Sie Funktionen haben, die das Firebase Admin SDK (Version 9.3.0 oder höher) verwenden, um in die Firebase-Authentifizierung zu schreiben, werden diese Schreibvorgänge an den Auth-Emulator gesendet, sofern dieser ausgeführt wird. Wenn durch diese Schreibvorgänge weitere Funktionen ausgelöst werden, werden sie im Cloud Functions-Emulator ausgeführt.

Firebase-Hosting

Wenn Sie Cloud Functions verwenden, um dynamische Inhalte für Firebase Hosting zu generieren , verwendet firebase emulators:start Ihre lokalen HTTP-Funktionen als Proxys für das Hosting.

Protokollierung

Der Emulator streamt Protokolle von Ihren Funktionen an das Terminalfenster, wo sie ausgeführt werden. Es zeigt alle Ausgaben der console.log() , console.info() , console.error() und console.warn() in Ihren Funktionen an.

Nächste Schritte

Ein vollständiges Beispiel für die Verwendung der Firebase-Emulator-Suite finden Sie im Test-Schnellstartbeispiel .