Bevor Sie den Extensions-Emulator mit Ihrer App verwenden, müssen Sie den allgemeinen Firebase Local Emulator Suite-Workflow kennen und die Local Emulator Suite installieren und konfigurieren. Außerdem sollten Sie sich die CLI-Befehle ansehen.
Außerdem wird davon ausgegangen, dass Sie mit Firebase Extensions vertraut sind und wissen, wie Sie sie in Ihren Firebase-Apps verwenden.
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 nachvollziehen. Gleichzeitig werden die Abrechnungskosten minimiert. Der Emulator führt die Funktionen Ihrer Erweiterung lokal aus, einschließlich Hintergrundereignis-getriggerter Funktionen mit den Emulatoren für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub sowie Eventarc-getriggerter Funktionen, die in Cloud Functions v2 implementiert sind.
Firebase-Projekt auswählen
Mit Firebase Local Emulator Suite werden Produkte für ein einzelnes Firebase-Projekt emuliert.
Wenn Sie das zu verwendende Projekt auswählen möchten, führen Sie vor dem Starten der Emulatoren 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 Demoprojekten.
Projekttyp | Funktionen | Mit Emulatoren verwenden |
---|---|---|
Real |
Ein echtes Firebase-Projekt ist ein Projekt, das Sie erstellt und konfiguriert haben (wahrscheinlich über die Firebase Console). Echte Projekte haben Live-Ressourcen wie Datenbankinstanzen, Storage-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 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 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 |
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, 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 Aufrufen nicht emulierter (Produktions-)Ressourcen durch Ihren Code keine Datenänderung, Nutzung und Abrechnung erfolgt.
- Bessere Offlineunterstützung, da Sie nicht auf das Internet zugreifen müssen, um Ihre SDK-Konfiguration herunterzuladen.
Erweiterung installieren und testen
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 testen Sie eine Erweiterung lokal:
Fügen Sie die Erweiterung dem lokalen Erweiterungsmanifest hinzu. Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und ihren Konfigurationen.
firebase ext:install --local firebase/firestore-send-email
Wenn Sie den oben genannten Befehl ausführen, werden Sie aufgefordert, die neueste 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.Starten Sie Local Emulator Suite wie gewohnt.
firebase emulators:start
Nun wird mit der in Ihrem Manifest aufgeführten firestore-send-email
-Erweiterungsinstanz der Quellcode dieser Erweiterung von Local Emulator Suite in ~/.cache/firebase/extensions
heruntergeladen. Sobald die Quellen heruntergeladen wurden, wird Local Emulator Suite gestartet. Sie können dann alle Hintergrundfunktionen der Erweiterung auslösen und Ihre App mit Local Emulator Suite verbinden, um die Integration mit Ihrer 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 „E-Mail auslösen“ erforderlich sind.
Alternativ können Sie für nicht interaktive Testumgebungen wie Continuous Integration-Workflows ein Testskript zum Auswerten der Erweiterung schreiben, das unter anderem erforderliche Cloud Firestore-Daten einfügt und Funktionen auslöst. Anschließend rufen Sie Local Emulator Suite auf, um Ihr 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 auf eine Weise testen, die der Produktionsumgebung 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 berücksichtigen. Emulatoren halten sich an die bereitgestellten Firebase-Sicherheitsregeln. In Situationen, in denen normalerweise IAM verwendet würde, z. B. zum Festlegen des Dienstkontos und damit der Berechtigungen für den Aufruf von Cloud Functions, ist der Emulator jedoch nicht konfigurierbar. Er verwendet das global verfügbare Konto auf Ihrem Entwicklercomputer, ähnlich wie beim direkten Ausführen eines lokalen Skripts.
Einschränkung des Auslösertyps
Derzeit unterstützt Firebase Local Emulator Suite nur durch HTTP-Anfragen ausgelöste Funktionen, Eventarc-Trigger für benutzerdefinierte Ereignisse 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.
Und jetzt?
- Eine Auswahl an Videos und detaillierten Beispielen finden Sie in der Playlist zum Training von Firebase Emulators.