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

Funktionen lokal ausführen

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

  • HTTPS-Funktionen
  • Aufrufbare Funktionen
  • Hintergrundfunktionen, die von Authentifizierung, Echtzeitdatenbank, Cloud Firestore und Cloud Pub/Sub ausgelöst werden.

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

Installieren Sie die Firebase-CLI

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

npm install -g firebase-tools

Um den lokalen Emulator verwenden zu können, müssen Ihre Cloud Functions-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 Ihre Funktionen Tests wollen mit Google APIs oder anderen Firebase APIs über die Interaktion Firebase Admin SDK , müssen Sie Administratoranmeldeinformationen einrichten.

  • Cloud Firestor und Echtzeit - Datenbank - Trigger haben bereits ausreichende Anmeldeinformationen und erfordern keine zusätzliche Einrichtung.
  • Für alle anderen APIs, einschließlich Firebase APIs wie Authentication und FCM oder Google APIs wie Cloud Translation oder Cloud Speech, sind die in diesem Abschnitt beschriebenen Einrichtungsschritte erforderlich. Dies gilt , ob Sie die Funktionen Shell oder verwenden firebase emulators:start .

So richten Sie Administratoranmeldeinformationen für emulierte Funktionen ein:

  1. Öffnen Sie die Dienstkonten Bereich der Google Cloud Console.
  2. Stellen Sie sicher , dass App Engine Standarddienstkonto ausgewählt ist, und verwenden Sie das Optionsmenü im rechten erstellen Taste auszuwählen.
  3. Wählen Sie bei Aufforderung JSON für den Schlüsseltyp, und klicken Sie auf Create.
  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
    

    Fenster

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

Nach Abschluss dieser Schritte können Sie Ihre Funktionen Tests Firebase und Google APIs zugreifen , die mit Admin SDK . Zum Beispiel, wenn ein Authentifizierungsauslöse Testen könnte die emulierte Funktion aufrufen admin.auth().getUserByEmail(email) - admin.auth().getUserByEmail(email) .

Funktionskonfiguration einrichten (optional)

Wenn Sie benutzerdefinierte Funktionen Konfigurationsvariablen verwenden, zuerst den Befehl ausführen , um Ihre benutzerdefinierte Konfiguration zu erhalten (führt dies im functions - Verzeichnis) in Ihrer lokalen Umgebung:

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

Zum Ausführen der Cloud - Funktionen Emulator, mit den emulators:start - Befehl:

firebase emulators:start

Der emulators:start startet Emulatoren für Cloud - Funktionen, Wolke Firestor, Echtzeit - Datenbank und Firebase auf den Produkten basiertes Hosting Sie in Ihrem lokalen Projekt mit initialisiert firebase init . Wenn Sie einen bestimmten Emulator starten möchten, verwenden Sie die --only Flagge:

firebase emulators:start --only functions

Wenn Sie eine Testsuite oder Testskript nach den Emulatoren begonnen haben , ausführen möchten, verwenden Sie die emulators:exec - Befehl:

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

Instrumentieren Sie Ihre App, um mit den Emulatoren zu sprechen

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 Ihr Prototyp und Testaktivitäten beinhalten aufrufbar Backend - Funktionen , configure Interaktion mit den Cloud - Funktionen für Firebase Emulator wie folgt aus :

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

Webversion 9

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

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

Webversion 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 mit dem folgenden URL-Format bereitgestellt:

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

Zum Beispiel eine einfache helloWorld würde Funktion mit der Standard - Host - Port und der Region serviert:

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

Instrumentieren Sie Ihre App für die Emulation von im Hintergrund ausgelösten Funktionen

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

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

Um Hintergrundereignisse auszulösen, verbinden Sie Ihre App oder Ihren Testcode über das SDK für Ihre Plattform mit den Emulatoren.

Interaktionen mit anderen Diensten

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

Cloud Firestore

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

Firebase-Hosting

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

Protokollierung

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

Nächste Schritte

Für ein vollständiges Beispiel für die Firebase - Emulator - Suite finden Sie in der Prüfung quickstart Probe .