获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Esegui le funzioni in locale

L'interfaccia a riga di comando di Firebase include un emulatore di funzioni cloud che può emulare i seguenti tipi di funzione:

  • 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 l'interfaccia a riga di comando di Firebase:

npm install -g firebase-tools

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

  • firebase-admin versione 8.0.0 o successiva.
  • firebase-functions versione 3.0.0 o successiva.

Configurare le credenziali di amministratore (facoltativo)

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

  • I trigger di Cloud Firestore e Realtime Database dispongono già di credenziali sufficienti e non richiedono un'ulteriore configurazione.
  • Tutte le altre API, comprese le API di 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 se utilizzi 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 come 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' Admin SDK . Ad esempio, durante il test di un trigger di autenticazione, la funzione emulata potrebbe chiamare admin.auth().getUserByEmail(email) .

Configurazione delle funzioni di set up (opzionale)

Se stai utilizzando le variabili di configurazione delle funzioni personalizzate, esegui prima il comando per ottenere la tua configurazione personalizzata (eseguila all'interno della 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 dell'emulatore

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 emulatore particolare, 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"

Strumenta la tua app per parlare con gli emulatori

Per strumentare la tua app per interagire con gli emulatori, potrebbe essere necessario eseguire alcune configurazioni aggiuntive.

Strumenta la tua app per le funzioni richiamabili

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

Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val functions = Firebase.functions
functions.useEmulator("10.0.2.2", 5001)
Java
// 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);
Rapido
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 tuo 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 a:

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

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

Gestori di test per eventi personalizzati emessi dalle estensioni

Per le funzioni che implementi per gestire gli eventi personalizzati di Firebase Extensions con Cloud Functions v2, l'emulatore di 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 Firebase Admin si connettono automaticamente all'emulatore Eventarc quando è 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 richiama l'emulatore Cloud Functions per attivare eventuali gestori registrati.

Puoi controllare i log di 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.

CloudFirestore

Se disponi di funzioni che utilizzano l'SDK Firebase Admin 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 cloud

Se disponi di funzioni che utilizzano l'SDK Firebase Admin (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 su Firebase Authentication, 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 contenuti dinamici per Firebase Hosting , firebase emulators:start utilizza le tue funzioni HTTP locali come proxy per l'hosting.

Registrazione

L'emulatore trasmette i log 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 funzioni.

Prossimi passi

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