Catch up on highlights from Firebase at Google I/O 2023. Learn more

Verwenden Sie den Erweiterungsemulator, um Erweiterungen zu evaluieren

Bevor Sie den Extensions-Emulator mit Ihrer App verwenden, vergewissern Sie sich, dass Sie den gesamten Arbeitsablauf der Firebase Local Emulator Suite verstehen und dass Sie die Local Emulator Suite installieren und konfigurieren und ihre CLI-Befehle überprüfen .

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

Was kann ich mit dem Extensions-Emulator machen?

Mit dem Extensions-Emulator können Sie Erweiterungen in einer sicheren lokalen Umgebung installieren und verwalten und ihre Funktionen besser verstehen, während die Abrechnungskosten minimiert werden. Der Emulator führt die Funktionen Ihrer Erweiterung lokal aus, einschließlich durch Hintergrundereignisse ausgelöster Funktionen unter Verwendung der Emulatoren für Cloud Firestore, Echtzeitdatenbank, Cloud Storage für Firebase, Authentifizierung und Pub/Sub sowie durch Eventarc ausgelöste Funktionen, die in Cloud Functions v2 implementiert sind.

Wählen Sie ein Firebase-Projekt aus

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

Um das zu verwendende Projekt auszuwählen, bevor Sie die Emulatoren starten, führen Sie in der Befehlszeilenschnittstelle firebase use in Ihrem Arbeitsverzeichnis aus. Oder Sie können das Flag --project an jeden Emulatorbefehl übergeben.

Die Local Emulator Suite unterstützt die Emulation echter Firebase-Projekte und Demo- Projekte.

Projekttyp Merkmale Verwenden Sie mit Emulatoren
Real

Ein echtes Firebase-Projekt ist eines, das Sie erstellt und konfiguriert haben (höchstwahrscheinlich über die Firebase-Konsole).

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

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

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

Demo

Ein Demo-Firebase-Projekt hat keine echte Firebase-Konfiguration und keine Live-Ressourcen. Auf diese Projekte wird normalerweise über Codelabs oder andere Tutorials zugegriffen.

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

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

Wir empfehlen Ihnen, möglichst Demoprojekte zu verwenden. Zu den Vorteilen gehören:

  • Einfachere Einrichtung, da Sie die Emulatoren ausführen können, ohne jemals ein Firebase-Projekt zu erstellen
  • Höhere Sicherheit, denn wenn Ihr Code versehentlich nicht emulierte (Produktions-)Ressourcen aufruft, besteht keine Chance auf Datenänderung, Nutzung und Abrechnung
  • Besserer Offline-Support, da Sie nicht auf das Internet zugreifen müssen, um Ihre SDK-Konfiguration herunterzuladen.

Installieren und evaluieren Sie eine Erweiterung

Die Verwendung des Extensions-Emulators zum Bewerten, ob eine Erweiterung Ihren Anforderungen entspricht, ist unkompliziert.

Angenommen, Sie interessieren sich für die Trigger-E-Mail- Erweiterung ( firestore-send-email ), obwohl der folgende Workflow alle Erweiterungen abdeckt. Wenn Trigger Email mit lokalen Emulatoren ausgeführt wird, nutzt es automatisch die Cloud Firestore- und Cloud Functions-Emulatoren.

So evaluieren Sie eine Erweiterung lokal:

  1. Fügen Sie die Erweiterung dem lokalen Erweiterungsmanifest hinzu. Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und deren Konfigurationen.

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

    Wenn Sie den obigen Befehl ausführen, werden Sie aufgefordert, die neueste Version der Erweiterung firebase/firestore-send-email zu konfigurieren und die Konfiguration im Manifest zu speichern, die Konfiguration wird jedoch nicht für Ihr Projekt bereitgestellt. Weitere Informationen hierzu finden Sie unter Verwalten der Konfiguration von Erweiterungen mit Manifesten

  2. Starten Sie die Local Emulator Suite wie gewohnt.

    firebase emulators:start

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

Sie können die Benutzeroberfläche der Emulator Suite verwenden, um Daten zur Sammlung von E-Mail-Dokumenten hinzuzufügen und andere Back-End-Ressourcen einzurichten, wie von der Trigger-E-Mail-Erweiterung gefordert.

Alternativ können Sie für nicht interaktive Testumgebungen wie Continuous Integration-Workflows ein Testskript zum Evaluieren der Erweiterung schreiben, das unter anderem die erforderlichen Cloud Firestore-Daten füllt und Funktionen auslöst. Sie würden dann die Local Emulator Suite aufrufen, um Ihr Testskript auszuführen:

firebase emulators:exec my-test.sh

Wie sich das Testen mit dem Extensions-Emulator von der Produktion unterscheidet

Mit dem Extensions-Emulator können Sie Erweiterungen auf eine Weise testen, die der Produktionserfahrung sehr nahe kommt. 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 respektieren. Emulatoren halten sich an die bereitgestellten Firebase-Sicherheitsregeln, aber in Situationen, in denen IAM normalerweise verwendet würde, z. B. um Cloud-Funktionen zum Aufrufen von Dienstkonten und damit Berechtigungen festzulegen, ist der Emulator nicht konfigurierbar und verwendet das global verfügbare Konto auf Ihrem Entwicklercomputer. ähnlich wie beim direkten Ausführen eines lokalen Skripts.

Begrenzung der Art der Auslösung

Derzeit unterstützt die Firebase Local Emulator Suite nur durch HTTP-Anforderungen ausgelöste Funktionen, benutzerdefinierte Eventarc-Ereignisauslöser für Erweiterungen und durch Hintergrundereignisse ausgelöste Funktionen für Cloud Firestore, Realtime Database, Cloud Storage für Firebase, Authentifizierung und Pub/Sub. Um Erweiterungen zu evaluieren, die andere Arten von ausgelösten Funktionen verwenden, müssen Sie Ihre Erweiterung in einem Firebase-Testprojekt installieren .

Was als nächstes?