Estoy tratando de usar firebase v9 en mi proyecto Next.js, pero cada vez que lo importo, parece que vuelve indefinido...
import * as firebase from 'firebase/app' export function getFirebaseApp() { const clientCredentials = { ... } return firebase.initializeApp(clientCredentials) }Sin embargo, cuando intento ejecutar esto en el navegador, todo lo que aparece es este error:
TypeError: Cannot read property 'initializeApp' of undefinedEsto pasa con cualquier variación del import, he probado varias:
import * as firebase from 'firebase/app' import firebase from 'firebase/app' import { initializeApp } from 'firebase/app' // and the same thing importing from '@firebase/app' instead, though don't think that'd ever work Realmente no tengo idea de lo que está pasando, no creo que esto sea un problema de Next.js porque incluso VSCode no sugiere importar nada de firebase, aunque esté instalado (puedo verlo en node_modules ). Tengo esta línea en package.json :
{ "dependencies": { "firebase": "^9.0.2" } }Así que esto es realmente un misterio, realmente no tengo idea de lo que está pasando. ¿Alguna sugerencia de cómo puedo solucionar este problema?
EDITAR : Como he recibido dos comentarios que sugieren esto, supongo que lo pondré aquí:
Estoy usando el SDK modular, así que intenté importar initializeApp directamente, pero aún así no funcionó:
import { initializeApp } from 'firebase/app' export function getFirebaseApp() { const clientCredentials = { ... } return initializeApp(clientCredentials) } TypeError: Cannot read properties of undefined (reading 'initializeApp')Puede instalar la next versión de firebaseui y funcionará con el nuevo SDK:
npm i -S firebaseui@nexte intégrelo en su aplicación como aquí .
No tiene los beneficios del nuevo SDK si usa la versión compat .
Como se dijo en los problemas de github, ambas bibliotecas no se actualizarán pronto, por lo que valdría la pena hacer este pequeño esfuerzo y pasar el 100% al nuevo SDK.
Encontré la fuente del problema. Estaba usando react-firebaseui . Desafortunadamente, no es compatible con la versión modular de firebase (todavía). Entonces, la solución es usar otra cosa o usar la biblioteca de compatibilidad:
import firebase from 'firebase/compat/app'