Tengo problemas para seguir la guía en la documentación de firebase para vincular mi base de datos en tiempo real de firebase a mi boceto p5.js.
Ahora mismo tengo el siguiente código.
índice.html
<html> <head> <script src="https://cdn.jsdelivr.net/npm/p5@1.4.1/lib/p5.js"></script> <script type="module" src="https://cdnjs.cloudflare.com/ajax/libs/firebase/9.8.4/firebase-app.js"></script> <script type="module" src="https://cdnjs.cloudflare.com/ajax/libs/firebase/9.8.4/firebase-database.min.js"></script> </head> <body> <main> <script src="sketch.js"></script> </main> </body> </html>boceto.js
function setup() { createCanvas(400,400); background(0); const firebaseConfig = { ... }; const app = initializeApp(firebaseConfig); }A mi entender, esto debería, con el fin de
sketch.js , donde luego intenta ejecutar initializeApp desde las librerías de firebase.Sin embargo, estoy recibiendo este error:
🌸 p5.js says: [sketch.js, line 5] "initializeApp" is not defined in the current scope. If you have defined it in your code, you should check its scope, spelling, and letter-casing (JavaScript is case-sensitive).
Lo que ya probé:
type="module de las etiquetas del script (sin embargo, esto resultó en otro error, export declarations may only appear at top level of a module )undefined cuando intenté importar una función de un archivo de boceto local secundario, sketch2.js : agregué <script type="module" src="ouija2.js"></script> a mi HTML archivo, luego intenté llamarlo desde sketch.js . Cuando eliminé la etiqueta type="module" , ya no tenía el error undefined y se podía llamar a la función. En resumen, creo que tiene algo que ver con las etiquetas type="module" . Sin embargo, si los elimino, como se mencionó, obtengo un error diferente, quejándome de que no se me permite importar/exportar en otro lugar que no sea el nivel superior de un módulo.
¿Puede alguien explicarme por qué recibo este error undefined en este momento y cómo podría resolver este problema?
Creo que de alguna manera necesito volver a poner los métodos de Firebase en el alcance, ya que tuve que ocultarlos del alcance al tener que usar la etiqueta del módulo, pero no estoy seguro de cómo hacerlo.