Esegui funzioni localmente

La Firebase CLI include un emulatore di Cloud Functions che può emulare i seguenti tipi di funzione:

  • Funzioni HTTPS
  • Funzioni richiamabili
  • Funzioni in background attivate da autenticazione, database in tempo reale, Cloud Firestore e Cloud Pub/Sub.

È possibile eseguire funzioni localmente per testarle prima di distribuirle in produzione.

Installa Firebase CLI

Per utilizzare l'emulatore di Cloud Functions, installa prima la Firebase CLI:

npm install -g firebase-tools

Per poter utilizzare l'emulatore locale, le tue Cloud Functions devono dipendere da:

  • firebase-admin versione 8.0.0 o superiore.
  • firebase-functions della versione 3.0.0 o superiore.

Imposta le credenziali di amministratore (facoltativo)

Se volete che i vostri test funzioni di interagire con Google API o altre API Firebase tramite la Firebase Admin SDK , potrebbe essere necessario impostare le credenziali di amministratore.

  • Nuvola Firestore e Realtime trigger di database hanno già credenziali sufficienti, e non richiedono l'installazione aggiuntiva.
  • Tutte le altre API, incluse le API Firebase come Authentication e FCM o le API Google come Cloud Translation o Cloud Speech, richiedono i passaggi di configurazione descritti in questa sezione. Questo vale se si sta utilizzando le funzioni di shell o firebase emulators:start .

Per impostare le credenziali di amministratore per le funzioni emulate:

  1. Aprire il pannello Account di servizio del Google Cloud Console.
  2. Assicurarsi che sia selezionata App Engine account di servizio predefinito, e utilizzare il menu delle opzioni a destra per selezionare Crea chiave.
  3. Quando richiesto, selezionare JSON per il tipo di chiave, e fare clic su Crea.
  4. Imposta le tue credenziali predefinite di Google in modo che puntino alla chiave scaricata:

    Unix

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

    finestre

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

Dopo aver completato questi passaggi, i test funzioni possono accedere alle API Firebase e Google utilizzando l' Admin SDK . Ad esempio, quando si verifica un trigger di autenticazione, la funzione emulato potrebbe chiamare admin.auth().getUserByEmail(email) .

Imposta configurazione funzioni (opzionale)

Se si sta utilizzando funzioni personalizzate variabili di configurazione, prima eseguire il comando per ottenere la vostra configurazione personalizzata (eseguire questo all'interno della functions directory) nel vostro ambiente locale:

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

Esegui la suite di emulazione

Per eseguire le funzioni cloud emulatore, utilizzare i emulators:start comando:

firebase emulators:start

emulators:start comando avvierà emulatori per le funzioni di nube, nube Firestore, in tempo reale del database e Firebase Hosting in base ai prodotti che hai inizializzate nel progetto locale utilizzando firebase init . Se si desidera avviare un particolare emulatore, utilizzare il --only bandiera:

firebase emulators:start --only functions

Se si desidera eseguire una suite di test o uno script di prova dopo gli emulatori hanno iniziato, utilizzare i emulators:exec comando:

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

Configura la tua app per parlare con gli emulatori

Per configurare la tua app per interagire con gli emulatori, potresti dover eseguire alcune configurazioni aggiuntive.

Configura la tua app per funzioni richiamabili

Se le vostre attività di prototipazione e di test coinvolgono funzioni di back-end richiamabili , l'interazione di configurazione con le funzioni cloud per Firebase emulatore come questo:

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);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Versione web 9

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

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

Versione web 8

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

Configura la tua app per l'emulazione delle funzioni HTTPS

Ogni funzione HTTPS nel tuo codice verrà offerta dall'emulatore locale utilizzando il seguente formato URL:

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

Per esempio un semplice helloWorld funzione con la porta host predefinito e regione sarebbe servito a:

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

Strumenta la tua app per l'emulazione delle funzioni attivate in background

L'emulatore di Cloud Functions supporta le funzioni attivate in background dalle seguenti origini:

  • Emulatore di database in tempo reale
  • Emulatore Cloud Firestore
  • Emulatore di autenticazione
  • Emulatore Pub/Sub

Per attivare eventi in background, collega la tua app o prova il codice agli emulatori utilizzando l'SDK per la tua piattaforma.

Interazioni con altri servizi

La suite di emulatori include più emulatori, che consentono di testare le interazioni tra prodotti.

Cloud Firestore

Se disponi di Cloud Functions che utilizzano Firebase Admin SDK per scrivere su Cloud Firestore, queste scritture verranno inviate all'emulatore Cloud Firestore se è in esecuzione. Se ulteriori Cloud Functions vengono attivate da tali scritture, verranno eseguite nell'emulatore di Cloud Functions.

Hosting Firebase

Se stai usando le funzioni cloud per generare contenuti dinamici per Firebase Hosting , firebase emulators:start utilizza le funzioni HTTP locale come proxy per l'hosting.

Registrazione

L'emulatore trasmette i log dalle funzioni alla finestra del terminale in cui vengono eseguiti. Esso mostra tutto l'output da console.log() , console.info() , console.error() , e console.warn() dichiarazioni dentro le funzioni.

Prossimi passi

Per un esempio completo di utilizzo della suite emulatore Firebase, vedere l' esempio delle Guide rapide test .