Estoy tratando de leer y escribir en firestore, usar la autenticación de firebase y el almacenamiento de firebase dentro de una aplicación nativa de reacción administrada por exposición.
Error completo:
While trying to resolve module `firebase` from file `C:\Users\joshu\Desktop\VSProjects\VolleyballConnect\firebase.js`, the package `C:\Users\joshu\Desktop\VSProjects\VolleyballConnect\node_modules\firebase\package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`C:\Users\joshu\Desktop\VSProjects\VolleyballConnect\node_modules\firebase\index`. Indeed, none of these files exist: * C:\Users\joshu\Desktop\VSProjects\VolleyballConnect\node_modules\firebase\index(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json) * C:\Users\joshu\Desktop\VSProjects\VolleyballConnect\node_modules\firebase\index\index(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json)Mi archivo de configuración de firebase:
import firebase from "firebase"; import { initializeApp } from "firebase/app"; import "firebase/firestore"; import "firebase/auth"; import "firebase/storage"; // I'm using the example key here, I have the correct config const firebaseConfig = { apiKey: "api-key", authDomain: "project-id.firebaseapp.com", databaseURL: "https://project-id.firebaseio.com", projectId: "project-id", storageBucket: "project-id.appspot.com", messagingSenderId: "sender-id", appId: "app-id", measurementId: "G-measurement-id", }; if (firebase.apps.length === 0) { initializeApp(firebaseConfig); } const db = firebase.firestore(); const auth = firebase.auth(); const storage = firebase.storage(); export { db, auth, storage }; Instalé el paquete firebase con:
expo install firebaseCualquier ayuda sería muy apreciada. ¡Gracias!
Para reducir el tamaño de la aplicación, firebase SDK (v9.0.0) se volvió modular. Ya no puede hacer la declaración de importación como antes en v8.
Tienes dos opciones.
Esta:
import firebase from 'firebase/app'; import 'firebase/auth'; import 'firebase/firestore';Debería cambiarse a:
// v9 compat packages are API compatible with v8 code import firebase from 'firebase/compat/app'; import 'firebase/compat/auth'; import 'firebase/compat/firestore';De esto:
import firebase from "firebase/compat/app"; import "firebase/compat/auth"; const auth = firebase.auth(); auth.onAuthStateChanged(user => { // Check for user status });A esto:
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(firebaseApp); onAuthStateChanged(auth, user => { // Check for user status });Definitivamente deberías revisar la documentación .
Me encontré con el mismo problema hoy, en mi caso, se resolvió siguiendo.
1.
// v9 compat packages are API compatible with v8 code import firebase from 'firebase/compat/app'; import 'firebase/compat/auth'; import 'firebase/compat/firestore';cambiar de ↓
if (firebase.apps.length === 0) { initializeApp(firebaseConfig); }a ↓
app = firebase.initializeApp(firebaseConfig)Este enlace fue realmente útil
Para estar seguro, comparto mi firebase.js (ocultando información personal)
import firebase from 'firebase/compat/app'; import 'firebase/compat/auth'; import 'firebase/compat/firestore'; const firebaseConfig = { apiKey: "AIzxxxxxxxxxxxxxxxxxxxBbBFNGMI", authDomain: "sixxxxxxxxxcc8.firebaseapp.com", projectId: "sxxxxxxxxxxx8", storageBucket: "xxxxxxxxxxxxxcc8.appspot.com", messagingSenderId: "6xxxxxxxxxx", appId: "1:65xxxxxxxx13:web:d0exxxxxxxxxxxxxxxxx7c" }; let app; if (firebase.apps.length === 0) { app = firebase.initializeApp(firebaseConfig) } else { app = firebase.app(); } const db = app.firestore(); const auth = firebase.auth(); export { db, auth };Desinstale firebase, luego instale firebase@8.2.3