Erweiterungen mit dem Erweiterungsemulator bewerten

Bevor Sie den Extensions-Emulator mit Ihrer Anwendung verwenden, sollten Sie sich mit dem allgemeinen Firebase Local Emulator Suite-Workflow vertraut machen. Außerdem müssen Sie die Local Emulator Suite installieren und konfigurieren und die zugehörigen CLI-Befehle prüfen.

In diesem Leitfaden wird außerdem davon ausgegangen, dass Sie mit Firebase Extensions und der Verwendung in Ihren Firebase-Apps vertraut sind.

Was kann ich mit dem Extensions-Emulator tun?

Mit dem Extensions-Emulator können Sie Erweiterungen in einer sicheren lokalen Umgebung installieren und verwalten und ihre Funktionen besser verstehen, während gleichzeitig die in Rechnung gestellten Kosten minimiert werden. Der Emulator führt die Funktionen Ihrer Erweiterung lokal aus, einschließlich Hintergrundfunktionen, die durch Ereignisse ausgelöst werden, mithilfe der Emulatoren für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub sowie Eventarc-ausgelöster Funktionen, die in Cloud Functions v2 implementiert sind.

Firebase-Projekt auswählen

Die Firebase Local Emulator Suite emuliert Produkte für ein einzelnes Firebase-Projekt.

Wenn Sie das zu verwendende Projekt auswählen möchten, führen Sie vor dem Starten der Emulatoren in der Befehlszeile firebase use in Ihrem Arbeitsverzeichnis aus. Alternativ können Sie das Flag --project an jeden Emulatorbefehl übergeben.

Local Emulator Suite unterstützt die Emulation von echten Firebase-Projekten und Demo-Projekten.

Projekttyp Funktionen Mit Emulatoren verwenden
Real

Ein echtes Firebase-Projekt ist ein von Ihnen erstelltes und konfiguriertes Projekt (höchstwahrscheinlich über die Firebase Console).

Echte Projekte haben Live-Ressourcen wie Datenbankinstanzen, Storage-Buckets, Funktionen oder andere Ressourcen, die Sie für dieses Firebase-Projekt einrichten.

Wenn Sie mit echten Firebase-Projekten arbeiten, können Sie Emulatoren für alle oder einige der unterstützten Produkte ausführen.

Bei allen Produkten, die Sie nicht emulieren, interagieren Ihre Anwendungen und Ihr Code mit der Live-Ressource (Datenbankinstanz, Storage-Bucket, Funktion usw.).

Demo

Ein Firebase-Demoprojekt hat keine echte Firebase-Konfiguration und keine Live-Ressourcen. Auf diese Projekte wird in der Regel über Codelabs oder andere Tutorials zugegriffen.

Projekt-IDs für Demoprojekte haben das Präfix demo-.

Wenn Sie mit Firebase-Demoprojekten arbeiten, interagieren Ihre Apps und Ihr Code nur mit Emulatoren. Wenn Ihre Anwendung versucht, mit einer Ressource zu interagieren, für die kein Emulator ausgeführt wird, schlägt dieser Code fehl.

Wir empfehlen, nach Möglichkeit Demoprojekte zu verwenden. Die wichtigsten Vorteile:

  • Einfachere Einrichtung, da Sie die Emulatoren ausführen können, ohne ein Firebase-Projekt erstellen zu müssen
  • Höhere Sicherheit, da bei versehentlichem Aufruf nicht emulierter (Produktions-)Ressourcen durch Ihren Code keine Datenänderung, Nutzung und Abrechnung möglich ist
  • Bessere Offlineunterstützung, da kein Internetzugriff erforderlich ist, um Ihre SDK-Konfiguration herunterzuladen.

Erweiterung installieren und bewerten

Mit dem Extensions-Emulator können Sie ganz einfach prüfen, ob eine Erweiterung Ihren Anforderungen entspricht.

Angenommen, Sie interessieren sich für die Erweiterung „Trigger Email“ (firestore-send-email). Der folgende Workflow gilt jedoch für jede Erweiterung. Wenn Trigger Email mit lokalen Emulatoren ausgeführt wird, werden automatisch die Emulatoren Cloud Firestore und Cloud Functions verwendet.

So bewerten Sie eine Erweiterung lokal:

  1. Fügen Sie die Erweiterung dem Manifest für lokale Erweiterungen hinzu. Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und ihren Konfigurationen.

    firebase ext:install --local firebase/firestore-send-email

    Wenn Sie den obigen Befehl ausführen, werden Sie aufgefordert, die aktuelle Version der firebase/firestore-send-email-Erweiterung zu konfigurieren und die Konfiguration im Manifest zu speichern. Die Konfiguration wird jedoch nicht in Ihrem Projekt bereitgestellt. Weitere Informationen finden Sie unter Erweiterungskonfiguration mit Manifesten verwalten.

  2. Starten Sie die Local Emulator Suite wie gewohnt.

    firebase emulators:start

Anhand der in Ihrem Manifest aufgeführten Erweiterungsinstanz firestore-send-email lädt der Local Emulator Suite nun den Quellcode dieser Erweiterung in ~/.cache/firebase/extensions herunter. Nachdem die Quellen heruntergeladen wurden, wird der Local Emulator Suite gestartet. Sie können dann alle im Hintergrund ausgelösten Funktionen der Erweiterung auslösen und Ihre App mit dem Local Emulator Suite verbinden, um die Integration in Ihre App zu testen.

Mit Emulator Suite UI können Sie der Sammlung von E-Mail-Dokumenten Daten hinzufügen und andere Backend-Ressourcen einrichten, die für die Erweiterung „Trigger Email“ erforderlich sind.

Alternativ können Sie für nicht interaktive Testumgebungen wie Workflows für die kontinuierliche Integration ein Testskript zur Bewertung der Erweiterung schreiben, das unter anderem die erforderlichen Cloud Firestore-Daten füllt und Funktionen auslöst. Anschließend rufen Sie Local Emulator Suite auf, um das Testskript auszuführen:

firebase emulators:exec my-test.sh

Unterschiede zwischen Tests mit dem Extensions-Emulator und der Produktion

Mit dem Extensions-Emulator können Sie Erweiterungen so testen, dass die Produktionsumgebung möglichst genau nachgebildet wird. Es gibt jedoch einige Unterschiede zum Produktionsverhalten.

Cloud IAM

Die Firebase Emulator Suite versucht nicht, IAM-bezogenes Verhalten für die Ausführung zu replizieren oder zu berücksichtigen. Emulatoren halten sich an die bereitgestellten Firebase-Sicherheitsregeln. In Situationen, in denen normalerweise IAM verwendet wird, z. B. zum Festlegen des Dienstkontos für den Aufruf von Cloud Functions und damit der Berechtigungen, ist der Emulator jedoch nicht konfigurierbar und verwendet das global verfügbare Konto auf Ihrer Entwicklungsmaschine, ähnlich wie beim direkten Ausführen eines lokalen Skripts.

Einschränkung des Triggertyps

Derzeit unterstützt die Firebase Local Emulator Suite nur durch HTTP-Anfragen ausgelöste Funktionen, benutzerdefinierte Eventarc-Ereignistrigger für Erweiterungen und durch Hintergrundereignisse ausgelöste Funktionen für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub. Wenn Sie Erweiterungen bewerten möchten, die andere Arten von ausgelösten Funktionen verwenden, müssen Sie Ihre Erweiterung in einem Firebase-Testprojekt installieren.

Nächste Schritte