Traté de aplicar la carga de fotos para firebase 9 con el código:
const uploadTask = storage.ref(`images/${image.name}`).put(image);y:
storage .ref("images") .child(image.name) .getDownloadUrl() .then(url => { // post image inside the database db.collection("posts").add({ timestamp: Firebase.ServerValue.TIMESTAMP, caption: caption, imageUrl: url, username: username }); // set progress back to 0 once it's done! and reset everything else setProgress(0); setCaption(""); setImage(null); })Sin embargo, al ejecutar mi código, aparece un error: TypeError: firebase__WEBPACK_IMPORTED_MODULE_2 _.storage.ref no es una función
¿Cómo puedo solucionar esto?
El código que ha mostrado parece correcto para firebase 8, pero dice que está usando la versión 9. La versión 9 tiene algunos cambios significativos. Por lo tanto, deberá volver a la versión 8 o actualizar su código para usar los nuevos patrones. Por ejemplo, su primer fragmento de código ahora se hace así:
import { getStorage, ref, uploadBytes } from "firebase/storage" const storage = getStorage(); const storageRef = ref(storage, `images/${image.name}`); const uploadTask = uploadBytes(storageRef);Puede ver más información y ejemplos aquí: https://firebase.google.com/docs/storage/web/upload-files
Y las instrucciones sobre cómo actualizar se pueden encontrar aquí: https://firebase.google.com/docs/web/modular-upgrade