Bevor Sie den Extensions-Emulator mit Ihrer App verwenden, sollten Sie sich mit dem Firebase Local Emulator Suite-Workflow vertraut machen und Local Emulator Suite installieren und konfigurieren sowie die Befehle der Befehlszeile prüfen.
Außerdem wird 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, ihre Funktionen besser kennenlernen und gleichzeitig die Abrechnungskosten minimieren. Der Emulator führt die Funktionen Ihrer Erweiterung lokal aus, einschließlich ereignisgesteuerter Funktionen im Hintergrund mit den Emulatoren für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub sowie Eventarc-Trigger-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 Demoprojekten.
Projekttyp | Funktionen | Mit Emulatoren verwenden |
---|---|---|
Real |
Ein echtes Firebase-Projekt ist ein Projekt, das Sie erstellt und konfiguriert haben, höchstwahrscheinlich über die Firebase Console. Echte Projekte haben Liveressourcen 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 eines oder alle unterstützten Produkte ausführen. Bei 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 Liveressourcen. Normalerweise wird über Codelabs oder andere Tutorials auf diese Projekte zugegriffen. Projekt-IDs für Demoprojekte haben das Präfix |
Bei der Arbeit mit Firebase-Demoprojekten 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 der 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 geändert werden und es keine Nutzung und Abrechnung gibt
- Bessere Offlineunterstützung, da zum Herunterladen der SDK-Konfiguration kein Internetzugriff erforderlich ist.
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-E-Mail“ (firestore-send-email
). Der folgende Workflow gilt jedoch für alle Erweiterungen. Wenn Sie Trigger Email mit lokalen Emulatoren ausführen, werden automatisch die Cloud Firestore- und Cloud Functions-Emulatoren verwendet.
So bewerten Sie eine Erweiterung lokal:
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 neueste Version der Erweiterung
firebase/firestore-send-email
zu konfigurieren und die Konfiguration im Manifest zu speichern. Die Konfiguration wird jedoch nicht in Ihrem Projekt bereitgestellt. Weitere Informationen finden Sie unter Konfiguration von Erweiterungen mit Manifesten verwalten.Starten Sie die Local Emulator Suite wie gewohnt.
firebase emulators:start
Jetzt lädt Local Emulator Suite mithilfe der in Ihrem Manifest aufgeführten Erweiterungsinstanz firestore-send-email
den Quellcode dieser Erweiterung in ~/.cache/firebase/extensions
herunter. Sobald die Quellen heruntergeladen wurden, wird die Local Emulator Suite gestartet. Sie können dann eine der im Hintergrund ausgelösten Funktionen der Erweiterung auslösen und Ihre App mit der Local Emulator Suite verbinden, um die Integration mit Ihrer App zu testen.
Mit Emulator Suite UI können Sie der Sammlung „E-Mail-Dokumente“ Daten hinzufügen und andere Backend-Ressourcen einrichten, wie es von der Trigger-E-Mail-Erweiterung gefordert wird.
Für nicht interaktive Testumgebungen wie kontinuierliche Integrationsworkflows können Sie alternativ ein Testskript zum Bewerten der Erweiterung schreiben, das unter anderem die erforderlichen Cloud Firestore-Daten einfügt und Funktionen auslöst. Sie würden dann Local Emulator Suite aufrufen, um das Testscript 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 sie der Produktionsumgebung möglichst nahekommen. Es gibt jedoch einige Unterschiede zum Produktionsverhalten.
Cloud IAM
Die Firebase Emulator Suite versucht nicht, IAM-bezogenes Verhalten bei der Ausführung zu replizieren oder zu respektieren. 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 Cloud Functions, ist der Emulator jedoch nicht konfigurierbar und verwendet das global verfügbare Konto auf Ihrem Entwicklercomputer, ähnlich wie beim direkten Ausführen eines lokalen Scripts.
Einschränkung des Triggertyps
Derzeit werden von Firebase Local Emulator Suite nur HTTP-Anfrage ausgelöste Funktionen, benutzerdefinierte Eventarc-Ereignistrigger für Erweiterungen und Hintergrundereignis ausgelöste Funktionen für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub unterstützt. Um Erweiterungen zu bewerten, die andere Arten ausgelöster Funktionen verwenden, müssen Sie die Erweiterung in einem Firebase-Testprojekt installieren.
Und jetzt?
- Eine Auswahl an Videos und detaillierte Anleitungsbeispiele finden Sie in der Trainings-Playlist für Firebase Emulators.