Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Esegui le funzioni in locale

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

L'interfaccia a riga di comando di Firebase include un emulatore di Cloud Functions in grado di emulare i seguenti tipi di funzioni:

  • Funzioni HTTPS
  • Funzioni richiamabili
  • Funzioni in background attivate da Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage e Cloud Pub/Sub.

È possibile eseguire le funzioni in locale per testarle prima della distribuzione in produzione.

Installa l'interfaccia a riga di comando di Firebase

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

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 successiva.
  • firebase-functions versione 3.0.0 o successiva.

Configura le credenziali di amministratore (facoltativo)

Se desideri che i tuoi test delle funzioni interagiscano con le API di Google o altre API Firebase tramite Firebase Admin SDK , potresti dover configurare le credenziali di amministratore.

  • I trigger di Cloud Firestore e Realtime Database dispongono già di credenziali sufficienti e non richiedono una configurazione aggiuntiva.
  • Tutte le altre API, comprese le API Firebase come Authentication e FCM o le API di Google come Cloud Translation o Cloud Speech, richiedono i passaggi di configurazione descritti in questa sezione. Questo vale sia che tu stia utilizzando la shell di Cloud Functions o firebase emulators:start .

Per configurare le credenziali di amministratore per le funzioni emulate:

  1. Apri il riquadro Account di servizio di Google Cloud Console.
  2. Assicurati che l' account di servizio predefinito di App Engine sia selezionato e utilizza il menu delle opzioni a destra per selezionare Crea chiave .
  3. Quando richiesto, seleziona JSON per il tipo di chiave e fai 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 tuoi test delle funzioni possono accedere alle API di Firebase e Google utilizzando l' SDK di amministrazione . Ad esempio, durante il test di un trigger di autenticazione, la funzione emulata potrebbe chiamare admin.auth().getUserByEmail(email) .

Configurare la configurazione delle funzioni (opzionale)

Se stai utilizzando variabili di configurazione delle funzioni personalizzate, esegui prima il comando per ottenere la tua configurazione personalizzata (eseguila nella directory delle functions ) nel tuo 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 emulatori

Per eseguire l'emulatore di Cloud Functions, utilizza il comando emulators:start :

firebase emulators:start

Il comando emulators:start avvierà gli emulatori per Cloud Functions, Cloud Firestore, Realtime Database e Firebase Hosting in base ai prodotti che hai inizializzato nel tuo progetto locale utilizzando firebase init . Se vuoi avviare un particolare emulatore, usa il flag --only :

firebase emulators:start --only functions

Se si desidera eseguire una suite di test o uno script di test dopo l'avvio degli emulatori, utilizzare il comando emulators:exec :

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

Strumento la tua app per parlare con gli emulatori

Per consentire alla tua app di interagire con gli emulatori, potrebbe essere necessario eseguire alcune configurazioni aggiuntive.

Strumento la tua app per funzioni richiamabili

Se le tue attività di prototipazione e test coinvolgono funzioni di backend richiamabili , configura l'interazione con l'emulatore Cloud Functions for Firebase in questo modo:

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

Web version 9

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

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

Web version 8

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

Strumenta la tua app per l'emulazione delle funzioni HTTPS

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

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

Ad esempio, una semplice funzione helloWorld con la porta host e la regione predefinite verrebbe servita in:

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

Strumenti la tua app per l'emulazione di funzioni attivate in background

L'emulatore 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, modifica le risorse di back-end utilizzando l'interfaccia utente di Emulator Suite o collegando la tua app o testando il codice agli emulatori utilizzando l'SDK per la tua piattaforma.

Testare i gestori per gli eventi personalizzati emessi dalle estensioni

Per le funzioni che implementi per gestire gli eventi personalizzati di Firebase Extensions con Cloud Functions v2, l'emulatore Cloud Functions si accoppia con l'emulatore Eventarc per supportare i trigger Eventarc .

Per testare i gestori di eventi personalizzati per le estensioni che emettono eventi, devi installare gli emulatori Cloud Functions ed Eventarc.

Il runtime di Cloud Functions imposta la variabile di ambiente EVENTARC_EMULATOR su localhost:9299 nel processo corrente se l'emulatore Eventarc è in esecuzione. Gli SDK di Firebase Admin si connettono automaticamente all'emulatore Eventarc quando viene impostata la variabile di ambiente EVENTARC_EMULATOR . È possibile modificare la porta predefinita come discusso in Configure Local Emulator Suite .

Quando le variabili di ambiente sono configurate correttamente, Firebase Admin SDK invia automaticamente gli eventi all'emulatore Eventarc. A sua volta, l'emulatore Eventarc effettua una richiamata all'emulatore Cloud Functions per attivare eventuali gestori registrati.

È possibile controllare i registri delle funzioni nell'interfaccia utente di Emulator Suite per i dettagli sull'esecuzione del gestore.

Interazioni con altri servizi

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

Cloud Firestore

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

Archiviazione su cloud

Se disponi di funzioni che utilizzano Firebase Admin SDK (versione 9.7.0 o successiva) per scrivere su Cloud Storage, queste scritture verranno inviate all'emulatore Cloud Storage se è in esecuzione. Se ulteriori funzioni vengono attivate da tali scritture, verranno eseguite nell'emulatore di Cloud Functions.

Autenticazione Firebase

Se disponi di funzioni che utilizzano Firebase Admin SDK (versione 9.3.0 o successiva) per scrivere nell'autenticazione Firebase, queste scritture verranno inviate all'emulatore Auth se è in esecuzione. Se ulteriori funzioni vengono attivate da tali scritture, verranno eseguite nell'emulatore di Cloud Functions.

Hosting Firebase

Se utilizzi Cloud Functions per generare contenuto dinamico per Firebase Hosting , firebase emulators:start utilizza le tue funzioni HTTP locali come proxy per l'hosting.

Registrazione

L'emulatore trasmette i registri dalle tue funzioni alla finestra del terminale in cui vengono eseguiti. Visualizza tutto l'output delle console.log() , console.info() , console.error() e console.warn() all'interno delle tue funzioni.

Prossimi passi

Per un esempio completo dell'utilizzo della suite di emulatori Firebase, vedere l' esempio di avvio rapido di test .