Después de actualizar a 8.0.0, aparece el siguiente error:
Intento de error de importación: 'initializeApp' no se exporta desde 'firebase/app' (importado como 'firebase').
Mi importación se ve así:
import * as firebase from "firebase/app" firebase.initializeApp({ ... })TypeScript también se queja:
La propiedad 'initializeApp' no existe en el tipo 'typeof import("/path/to/my/file")'. ts(2339)
¿Cómo puedo solucionar esto?
En la versión 8.0.0 , el SDK de Firebase tuvo un cambio importante en la forma en que maneja las exportaciones:
Cambio importante: los campos del
browseren los archivos package.json ahora apuntan a paquetes ESM en lugar de paquetes CJS. Los usuarios que usan importaciones de ESM ahora deben usar la importación predeterminada en lugar de una importación de espacio de nombres.Antes de 8.0.0
import * as firebase from 'firebase/app'Después de 8.0.0
import firebase from 'firebase/app'El código que usa
require('firebase/app')orequire('firebase')seguirá funcionando, pero para obtener las tipificaciones adecuadas (para completar el código, por ejemplo), los usuarios deben cambiar estas llamadas require arequire('firebase/app').defaultorequire('firebase').default. Esto se debe a que el SDK ahora usa tipos para el paquete ESM y los diferentes paquetes comparten un archivo de tipos.
Por lo tanto, deberá utilizar la exportación predeterminada del nuevo paquete ESM:
import firebase from "firebase/app" firebase.initializeApp({ ... })Si está trabajando con SDK versión 9.0 , lea esta pregunta en su lugar:
forma antigua de importar firebase: importar * como firebase desde "firebase/app";
Nueva forma de importar en la versión 8.0.0: importar firebase desde "firebase/app"
por ejemplo: la forma en que lo hice. Solo las primeras 2 líneas son relevantes, las otras líneas solo se agregan como parte de mi código, ¡pero es bastante general tbh!
import firebase from "firebase/app" import "firebase/auth" const firebaseConfig = { apiKey: XXXX, authDomain: XXX, projectId: XXXX, storageBucket: XXXX, messagingSenderId: XXXX, appId: XXXX, } if (!firebase.apps.length) { firebase.initializeApp(firebaseConfig) } export const auth = firebase.auth() export const googleAuthProvider = new firebase.auth.GoogleAuthProvider()reemplace XXXX por sus datos, solo quede claro :)
intente usar esto para firebase 9 arriba
import firebase from 'firebase/compat/app'; import 'firebase/compat/auth'; import 'firebase/compat/firestore';o puede leer más en: https://firebase.google.com/docs/web/modular-upgrade