Estoy tratando de escribir algunas pruebas automatizadas con el SDK del cliente de Firebase. Se supone que estas pruebas usan el emulador de autenticación de Firebase. Para evitar estropear los datos de producción, estoy usando los emuladores con una identificación de proyecto de demostración ( como se describe en la documentación ).
Arranco el emulador con este comando:
firebase emulators:start --project demo-test --only functions,firestore,storage,authLuego, en mis pruebas, inicializo la aplicación con:
import { initializeApp } from 'firebase/app' import { getAuth, connectAuthEmulator } from 'firebase/auth' const app = initializeApp({ projectId: 'demo-test' }) const auth = getAuth(app) connectAuthEmulator(auth, 'http://localhost:9099')Cuando la prueba se inicializa, aparece este error:
FirebaseError: Firebase: Error (auth/invalid-api-key). > 45 | const auth = getAuth(app) | ^Nota: Este problema solo ocurre con la autenticación. Puedo conectarme con éxito a otros emuladores como Firestore.
Parece que a pesar de lo que dice la documentación, en realidad no puedo conectar el SDK del cliente a un proyecto de demostración y usar el emulador de autenticación. Cada vez que lo intento, arroja este error.
¿Alguien sabe cómo configurar un emulador de proyecto de demostración y conectar el SDK del cliente al emulador de autenticación?
Tengo esto funcionando usando apiKey de producción y authDomain .
const app = initializeApp({ projectId: 'demo-test', apiKey: '...', authDomain: '...', }); Pero, obviamente, esto no es ideal considerando que los proyectos de demostración no deberían tener apiKey ni authDomain .
Además, me preocupé cuando aparece la advertencia "Ejecutándose en modo emulador. No usar con credenciales de producción", mientras uso la apiKey de producción. Pero resulta que la advertencia significa que no debemos ingresar información confidencial (como contraseñas reales) al ejecutar el emulador, como se indica aquí . Así que creo que no tenemos ningún problema en usar apiKey de producción para conectarnos al emulador.