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

Ejecutar funciones localmente

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Firebase CLI incluye un emulador de Cloud Functions que puede emular los siguientes tipos de funciones:

  • Funciones HTTPS
  • Funciones invocables
  • Funciones en segundo plano activadas desde Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage y Cloud Pub/Sub.

Puede ejecutar funciones localmente para probarlas antes de implementarlas en producción.

Instalar la CLI de Firebase

Para usar el emulador de Cloud Functions, primero instale Firebase CLI:

npm install -g firebase-tools

Para usar el emulador local, sus funciones en la nube deben depender de:

  • firebase-admin versión 8.0.0 o superior.
  • firebase-functions versión 3.0.0 o superior.

Configurar credenciales de administrador (opcional)

Si desea que sus pruebas de funciones interactúen con las API de Google u otras API de Firebase a través del SDK de administrador de Firebase , es posible que deba configurar las credenciales de administrador.

  • Los disparadores de Cloud Firestore y Realtime Database ya tienen credenciales suficientes y no requieren configuración adicional.
  • Todas las demás API, incluidas las API de Firebase, como Autenticación y FCM, o las API de Google, como Cloud Translation o Cloud Speech, requieren los pasos de configuración que se describen en esta sección. Esto se aplica tanto si usas el shell de Cloud Functions como firebase emulators:start .

Para configurar las credenciales de administrador para las funciones emuladas:

  1. Abra el panel Cuentas de servicio de Google Cloud Console.
  2. Asegúrate de que la cuenta de servicio predeterminada de App Engine esté seleccionada y usa el menú de opciones a la derecha para seleccionar Crear clave .
  3. Cuando se le solicite, seleccione JSON para el tipo de clave y haga clic en Crear .
  4. Configure sus credenciales predeterminadas de Google para que apunten a la clave descargada:

    Unix

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

    ventanas

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

Después de completar estos pasos, sus pruebas de funciones pueden acceder a las API de Firebase y Google mediante el SDK de administrador . Por ejemplo, al probar un activador de autenticación, la función emulada podría llamar a admin.auth().getUserByEmail(email) .

Configurar la configuración de funciones (opcional)

Si está utilizando variables de configuración de funciones personalizadas, primero ejecute el comando para obtener su configuración personalizada (ejecútelo dentro del directorio de functions ) en su entorno local:

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

Ejecute la suite del emulador

Para ejecutar el emulador de Cloud Functions, use el comando emulators:start :

firebase emulators:start

El comando emulators:start iniciará emuladores para Cloud Functions, Cloud Firestore, Realtime Database y Firebase Hosting en función de los productos que haya inicializado en su proyecto local mediante firebase init . Si desea iniciar un emulador en particular, use el indicador --only :

firebase emulators:start --only functions

Si desea ejecutar un conjunto de pruebas o un script de prueba después de que se hayan iniciado los emuladores, utilice el comando emulators:exec :

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

Instrumenta tu aplicación para hablar con los emuladores

Para instrumentar su aplicación para interactuar con los emuladores, es posible que deba realizar alguna configuración adicional.

Instrumente su aplicación para funciones llamables

Si sus actividades de prototipo y prueba involucran funciones de back-end a las que se puede llamar, configure la interacción con el emulador de Cloud Functions para Firebase de esta manera:

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);
Rápido
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);

Instrumente su aplicación para la emulación de funciones HTTPS

Cada función HTTPS en su código se servirá desde el emulador local utilizando el siguiente formato de URL:

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

Por ejemplo, una función helloWorld simple con el puerto de host y la región predeterminados se serviría en:

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

Instrumente su aplicación para la emulación de funciones activadas en segundo plano

El emulador de Cloud Functions admite funciones activadas en segundo plano de las siguientes fuentes:

  • Emulador de base de datos en tiempo real
  • Emulador de Cloud Firestore
  • emulador de autenticación
  • Emulador Pub/Sub

Para desencadenar eventos en segundo plano, modifique los recursos de back-end mediante la interfaz de usuario de Emulator Suite o conectando su aplicación o código de prueba a los emuladores mediante el SDK de su plataforma.

Controladores de prueba para eventos personalizados emitidos por extensiones

Para las funciones que implementa para manejar eventos personalizados de Firebase Extensions con Cloud Functions v2, el emulador de Cloud Functions se empareja con el emulador de Eventarc para admitir activadores de Eventarc .

Para probar controladores de eventos personalizados para extensiones que emiten eventos, debe instalar los emuladores Cloud Functions y Eventarc.

El tiempo de ejecución de Cloud Functions establece la variable de entorno EVENTARC_EMULATOR en localhost:9299 en el proceso actual si el emulador de Eventarc se está ejecutando. Los SDK de Firebase Admin se conectan automáticamente al emulador de Eventarc cuando se establece la variable de entorno EVENTARC_EMULATOR . Puede modificar el puerto predeterminado como se describe en Configure Local Emulator Suite .

Cuando las variables de entorno están configuradas correctamente, Firebase Admin SDK envía automáticamente eventos al emulador Eventarc. A su vez, el emulador de Eventarc vuelve a llamar al emulador de Cloud Functions para activar cualquier controlador registrado.

Puede consultar los registros de funciones en la interfaz de usuario de Emulator Suite para obtener detalles sobre la ejecución del controlador.

Interacciones con otros servicios

El conjunto de emuladores incluye múltiples emuladores, que permiten probar las interacciones entre productos.

Tienda de fuego en la nube

Si tiene funciones que usan Firebase Admin SDK para escribir en Cloud Firestore, estas escrituras se enviarán al emulador de Cloud Firestore si se está ejecutando. Si esas escrituras activan más funciones, se ejecutarán en el emulador de Cloud Functions.

Almacenamiento en la nube

Si tiene funciones que usan Firebase Admin SDK (versión 9.7.0 o superior) para escribir en Cloud Storage, estas escrituras se enviarán al emulador de Cloud Storage si se está ejecutando. Si esas escrituras activan más funciones, se ejecutarán en el emulador de Cloud Functions.

Autenticación de base de fuego

Si tiene funciones que usan el SDK de Firebase Admin (versión 9.3.0 o superior) para escribir en Firebase Authentication, estas escrituras se enviarán al emulador de Auth si se está ejecutando. Si esas escrituras activan más funciones, se ejecutarán en el emulador de Cloud Functions.

Alojamiento de base de fuego

Si usa Cloud Functions para generar contenido dinámico para Firebase Hosting , firebase emulators:start usa sus funciones HTTP locales como proxies para hospedaje.

Inicio sesión

El emulador transmite registros de sus funciones a la ventana del terminal donde se ejecutan. Muestra todos los resultados de las console.log() , console.info() , console.error() y console.warn() dentro de sus funciones.

Próximos pasos

Para obtener un ejemplo completo del uso del conjunto de emuladores de Firebase, consulte la muestra de inicio rápido de prueba .