Bevor Sie den Extensions-Emulator mit Ihrer App verwenden, stellen Sie sicher, dass Sie den gesamten Firebase Local Emulator Suite-Workflow verstehen , dass Sie die Local Emulator Suite installieren und konfigurieren und ihre CLI-Befehle überprüfen.
In dieser Anleitung 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 tun?
Mit dem Extensions-Emulator können Sie Erweiterungen in einer sicheren lokalen Umgebung installieren und verwalten, deren Funktionen besser verstehen und gleichzeitig die Abrechnungskosten minimieren. Der Emulator führt die Funktionen Ihrer Erweiterung lokal aus, einschließlich durch Hintergrundereignisse ausgelöster Funktionen mithilfe der Emulatoren für Cloud Firestore, Realtime Database, 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
Die Firebase Local Emulator Suite emuliert Produkte für ein einzelnes Firebase-Projekt.
Um das zu verwendende Projekt auszuwählen, führen Sie vor dem Starten der Emulatoren in der CLI firebase use
in Ihrem Arbeitsverzeichnis aus. Alternativ können Sie das Flag --project
an jeden Emulatorbefehl übergeben.
Die Local Emulator Suite unterstützt die Emulation echter Firebase-Projekte und Demoprojekte .
Projekttyp | Merkmale | Verwendung mit Emulatoren |
---|---|---|
Real | Ein echtes Firebase-Projekt ist eines, das Sie erstellt und konfiguriert haben (höchstwahrscheinlich über die Firebase-Konsole). Echte Projekte verfügen über Live-Ressourcen wie Datenbankinstanzen, Speicher-Buckets, Funktionen oder jede andere Ressource, die Sie für dieses Firebase-Projekt einrichten. | 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. Der Zugriff auf diese Projekte erfolgt normalerweise über Codelabs oder andere Tutorials. 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 Ihnen, nach Möglichkeit 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
- Bessere Offline-Unterstützung, da zum Herunterladen Ihrer SDK-Konfiguration kein Zugriff auf das Internet erforderlich ist.
Installieren und evaluieren Sie eine Erweiterung
Mit dem Extensions-Emulator können Sie problemlos beurteilen, ob eine Erweiterung Ihren Anforderungen entspricht.
Nehmen wir an, Sie interessieren sich für die Erweiterung Trigger Email ( firestore-send-email
), obwohl der folgende Workflow alle Erweiterungen abdeckt. Bei der Ausführung mit lokalen Emulatoren nutzt Trigger Email automatisch die Emulatoren Cloud Firestore und Cloud Functions.
So bewerten Sie eine Erweiterung lokal:
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 in Ihrem Projekt bereitgestellt. Weitere Informationen hierzu finden Sie unter Verwalten der Erweiterungskonfiguration mit ManifestenStarten Sie die Local Emulator Suite wie gewohnt.
firebase emulators:start
Mithilfe der in Ihrem Manifest aufgeführten Erweiterungsinstanz firestore-send-email
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 deren Integration mit Ihrer App zu testen.
Sie können die Emulator Suite-Benutzeroberfläche verwenden, um Daten zur E-Mail-Dokumentensammlung hinzuzufügen und andere Backend-Ressourcen einzurichten, je nach Bedarf der Trigger-E-Mail-Erweiterung.
Alternativ können Sie für nicht interaktive Testumgebungen wie kontinuierliche Integrationsworkflows ein Testskript zur Evaluierung der Erweiterung schreiben, das neben anderen Schritten die erforderlichen Cloud Firestore-Daten auffüllt und Funktionen auslöst. Anschließend würden Sie 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 dem Produktionserlebnis möglichst nahe kommt. Allerdings gibt es einige Unterschiede zum Produktionsverhalten.
Cloud-IAM
Die Firebase Emulator Suite versucht nicht, IAM-bezogenes Verhalten bei der Ausführung zu reproduzieren oder zu respektieren. Emulatoren halten sich an die bereitgestellten Firebase-Sicherheitsregeln, aber in Situationen, in denen IAM normalerweise verwendet wird, beispielsweise zum Festlegen von Cloud Functions, die ein Dienstkonto und damit Berechtigungen aufrufen, ist der Emulator nicht konfigurierbar und verwendet das global verfügbare Konto auf Ihrem Entwicklercomputer. Ähnlich wie die direkte Ausführung eines lokalen Skripts.
Einschränkung des Auslösetyps
Derzeit unterstützt die Firebase Local Emulator Suite nur durch HTTP-Anfragen 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 auszuwerten, die andere Arten von ausgelösten Funktionen verwenden, müssen Sie Ihre Erweiterung in einem Firebase-Testprojekt installieren .
Was als nächstes?
- Eine kuratierte Reihe von Videos und detaillierten Anleitungsbeispielen finden Sie in der Firebase Emulators Training Playlist .