Catch up on everything we announced at this year's Firebase Summit. Learn more

Uruchamiaj funkcje lokalnie

Firebase CLI zawiera emulator Cloud Functions, który może emulować następujące typy funkcji:

  • Funkcje HTTPS
  • Funkcje wywoływane
  • Funkcje w tle wyzwalane z uwierzytelniania, bazy danych czasu rzeczywistego, Cloud Firestore i Cloud Pub/Sub.

Funkcje można uruchamiać lokalnie, aby je przetestować przed wdrożeniem w środowisku produkcyjnym.

Zainstaluj interfejs wiersza polecenia Firebase

Aby korzystać z emulatora Cloud Functions, najpierw zainstaluj Firebase CLI:

npm install -g firebase-tools

Aby korzystać z lokalnego emulatora, Twoje Cloud Functions muszą być zależne od:

  • firebase-admin wersji 8.0.0 lub wyższej.
  • firebase-functions wersji 3.0.0 lub wyższej.

Skonfiguruj dane logowania administratora (opcjonalnie)

Jeśli chcesz, aby testy funkcje interakcji z API Google lub innych API Firebase poprzez Firebase Admin SDK , może trzeba skonfigurować poświadczenia administratora.

  • Cloud FireStore and Realtime wyzwalacze bazodanowe mają już wystarczające referencje, i nie wymagają dodatkowej konfiguracji.
  • Wszystkie inne interfejsy API, w tym interfejsy Firebase API, takie jak uwierzytelnianie i FCM, lub interfejsy Google, takie jak Cloud Translation lub Cloud Speech, wymagają czynności konfiguracyjnych opisanych w tej sekcji. Dotyczy to czy używasz funkcje skorupach firebase emulators:start .

Aby skonfigurować poświadczenia administratora dla emulowanych funkcji:

  1. Otwórz okienko kont usług z konsoli Google Cloud.
  2. Upewnij się, że domyślne konto Usługa App Engine jest zaznaczone, a korzystać z menu opcji w prawo, aby wybrać Utwórz klucz.
  3. Gdy pojawi się monit, wybierz JSON za typ klucza, a następnie kliknij przycisk Utwórz.
  4. Ustaw domyślne dane logowania Google tak, aby wskazywały pobrany klucz:

    Uniksa

    $ export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    
    $ firebase emulators:start
    

    Okna

    $ set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    
    $ firebase emulators:start
    

Po wykonaniu tych czynności, twoje testy funkcje mogą uzyskać dostęp Firebase i Google API za pomocą Admin SDK . Na przykład podczas testowania spust uwierzytelnienia, funkcja emulowane mogłoby wywołać admin.auth().getUserByEmail(email) .

Konfiguracja konfiguracji funkcji (opcjonalnie)

Jeśli używasz funkcji indywidualnych zmiennych konfiguracyjnych, najpierw uruchom polecenie, aby uzyskać swój własny config (uruchomić ten w functions katalogu) w swoim środowisku lokalnym:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Uruchom pakiet emulatorów

Aby uruchomić funkcje Chmura emulator, użyj emulators:start polecenie:

firebase emulators:start

emulators:start polecenie rozpocznie emulatory dla funkcji chmura, Chmura FireStore, Realtime Database i Firebase Hosting w oparciu o produkty zostały zainicjowane w lokalnym projekcie używając firebase init . Jeśli chcesz rozpocząć konkretny emulator, użyj --only flagę:

firebase emulators:start --only functions

Jeśli chcesz uruchomić zestaw testów lub badań skrypt po emulatory zaczęli użyj emulators:exec polecenie:

firebase emulators:exec "./my-test.sh"

Instrumentacja aplikacji, aby rozmawiać z emulatorami

Aby zinstrumentować aplikację do interakcji z emulatorami, może być konieczne wykonanie dodatkowej konfiguracji.

Instrumentacja aplikacji pod kątem funkcji, które można wywoływać

Jeśli twoje działania prototyp i testy obejmować wywołalnych funkcje backend , konfigurować interakcji z funkcjami Chmura Firebase emulatorze tak:

Android
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseFunctions functions = FirebaseFunctions.getInstance();
        functions.useEmulator("10.0.2.2", 5001);
Szybki
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Wersja internetowa 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Wersja internetowa 8

firebase.functions().useEmulator("localhost", 5001);

Instrumentacja aplikacji pod kątem emulacji funkcji HTTPS

Każda funkcja HTTPS w Twoim kodzie będzie obsługiwana z lokalnego emulatora przy użyciu następującego formatu adresu URL:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

Na przykład prosty helloWorld funkcja z portu domyślnego hosta i regionu będą podawane na stronie:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

Instrumentacja aplikacji do emulacji funkcji wyzwalanych w tle

Emulator Cloud Functions obsługuje funkcje wyzwalane w tle z następujących źródeł:

  • Emulator bazy danych czasu rzeczywistego
  • Emulator Cloud Firestore
  • Emulator uwierzytelniania
  • Emulator Pub/Sub

Aby wyzwolić zdarzenia w tle, połącz aplikację lub kod testowy z emulatorami przy użyciu zestawu SDK dla swojej platformy.

Interakcje z innymi usługami

Pakiet emulatorów zawiera wiele emulatorów, które umożliwiają testowanie interakcji między produktami.

Cloud Firestore

Jeśli masz Cloud Functions, które używają pakietu Firebase Admin SDK do zapisywania w Cloud Firestore, te zapisy będą wysyłane do działającego emulatora Cloud Firestore. Jeśli kolejne funkcje Cloud Functions zostaną wyzwolone przez te zapisy, zostaną one uruchomione w emulatorze Cloud Functions.

Hosting Firebase

Jeśli używasz funkcji chmury do generowania dynamicznej zawartości dla Firebase Hosting , firebase emulators:start wykorzystuje lokalne funkcje HTTP pełnomocnikami na hostingu.

Logowanie

Emulator przesyła strumieniowo dzienniki z funkcji do okna terminala, w którym są uruchamiane. Wyświetla wszystkie dane wyjściowe z console.log() , console.info() , console.error() , a console.warn() oświadczenia wewnątrz swoich funkcji.

Następne kroki

Aby uzyskać pełną przykład za pomocą emulatora pakiet Firebase, zobacz badania próby quickstart .