Estoy tratando de hacer una llamada/publicación a la base de datos pero recibo el error
functions.js:7 Uncaught ReferenceError: firebase is not definedSegún mi investigación, tengo entendido que 'firebase' está definido en el archivo de script firebase.js que se importa usando el código CDN del panel de configuración en Firebase. Pero todas las páginas de ayuda que encuentro son de 2014-2017 y versión 9 de Firebase usa un lenguaje de importación completamente diferente... Estas páginas no me ayudan...
estoy usando el estándar
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.1.3/firebase-app.js";¿Tengo razón al pensar que debido a que esta importación está sucediendo (y aparentemente es así, firebase-app.js aparece en el inspector) esa base de fuego debe definirse ...
¿O Firebase está definido en otro lugar y me falta algo? Si este es el caso, ¿dónde está definido Firebase y cómo lo importo (con V9 Firebase)?
Gracias
Editar: estoy haciendo todo esto a través de un tutorial que encontré en Youtube, es de 2019 ... ¿Es posible que llamar a 'firebase' ahora esté obsoleto y eso es lo que tengo estos problemas? ¿O debería esperar que funcione y seguir tratando de encontrar una solución?
No estoy seguro de cómo está utilizando los archivos de script, pero los ha definido como "módulos" en su html como:
y has inicializado Firebase desde tu aplicación:
const firebaseConfig = { YOU_FIREBASE_CONFIG } const app = initializeApp(firebaseConfig)
La diferencia entre v8 y v9 de firebase es un error bien conocido en estos días.
No estoy seguro de que esta pueda ser la solución exacta, pero al menos como una pista.
Usar compat es una forma de resolver.
Basado en el documento de base de fuego a continuación.
import firebase from 'firebase/compat/app';↑sería como importar.....
Cuando ejecutas este código:
import { initializeApp } from ... Este código importa solo la función initializeApp y nada más. Ese es precisamente el punto, porque al usar estas importaciones muy granulares, las herramientas de agrupación (como el paquete web) pueden eliminar cualquier parte del SDK de Firebase que no esté usando de su salida, lo que da como resultado una aplicación significativamente más pequeña.
Entonces, cuando ejecuta esa importación, ya no hay un espacio de nombres de base de fuego de nivel firebase . Para acceder a la base de datos en tiempo real, en su lugar, usaría:
import { initializeApp } from 'firebase/app'; import { getDatabase } from "firebase/database"; // Set the configuration for your app // TODO: Replace with your project's config object const firebaseConfig = { apiKey: "apiKey", authDomain: "projectId.firebaseapp.com", databaseURL: "https://databaseName.firebaseio.com", storageBucket: "bucket.appspot.com" }; const app = initializeApp(firebaseConfig); // Get a reference to the database service const database = getDatabase(app); // 👈 Get the database instanceEsto se muestra en la documentación sobre cómo inicializar el SDK de JavaScript de Realtime Database , por lo que recomiendo tenerlo a mano.
Si está siguiendo un tutorial o documentación de otro lugar, es probable que aún no se haya actualizado a la nueva sintaxis modular. También puede usar el modo de compat del nuevo SDK en ese caso, como señaló el usuario K Lee en su respuesta .