无法从 firebase/storage 导入 { getStorage } 以与 React Native Expo 图像选择器一起使用

问题描述 投票:0回答:3

我正在尝试将图像选择器保存到 Firebase。我阅读了许多关于 Google 云存储的教程以及官方文档。他们都说要做这样的事情:

import { getStorage, ref } from "firebase/storage";

这样你就可以:

const storage = getStorage()

然后

const ref = firebase.storage().ref();

无论我做什么,除了这个错误之外我什么也得不到:

TypeError: (0, _storage.getStorage) 不是一个函数。 (在“(0,_storage.getStorage)()”中,“(0,_storage.getStorage)”未定义)

我可以在我的node_modules 中看到firebase/storage。我通过控制台记录(firebase)以确保它是一件事。我尝试了一百万种不同的导入。我安装了其他 firebase 依赖项,例如 @react-native-firebase 来使用它们的存储功能,但没有任何效果。 Firebase 的其他一切对我来说都很好。

我不知道问题是什么。我很乐意用另一种方式来做,但一切都说要使用 storage() 方法。难道我做错了什么?除了使用存储方式将图片上传到云端之外,还有其他选择吗?

javascript react-native expo firebase-storage
3个回答
1
投票
import firebase from "firebase/app"; 
import "firebase/storage";

为我工作 确保您使用 firebase 版本 < 9

const handleUpload = async (pic) => {
    try {
        const response = await fetch(pic)
        const blob = await response.blob()
        const storageRef = firebase.storage().ref();
        // storageRef.put(blob).then((snapshot) => {
        //     console.log("Uploaded!");
        // });
        let ref = storageRef.child("/images/" + decoded.id)
        return ref.put(blob)
    } catch (error) {
        console.log(error)
    }
}

0
投票

检查您应用中的 Firebase 版本。

Firebase 版本 8 使用

firebase.storage()
方法。

为了使用

getStorage
,您需要使用 Firebase v9.x

请参阅本指南了解如何升级: 从版本 8 升级到模块化 Web SDK

对于版本 8,请确保单击 Firebase 文档中的 Web 版本 8 选项卡: https://firebase.google.com/docs/storage/web/upload-files

这是对我有用的代码片段(Firebase V8)。

我的 Firebase 初始化文件:FirebaseInitialize.js

import firebase from "firebase/app";
import "firebase/storage";

import { firebaseConfig } from "./firebaseConfig";

firebase.initializeApp(firebaseConfig);

export { firebase };

我的 Firebase 配置文件

export const firebaseConfig = {
  apiKey: "YOUR-API-KEY",
  authDomain: "YOUR-DOMAIN.firebaseapp.com",
  databaseURL: "https://YOUR-DOMAIN.firebaseio.com",
  projectId: "YOUR-PROJECTID",
  storageBucket: "YOUR-SOTRAGEBUCKET.appspot.com",
  appId: "APP-ID",
};

当我需要使用存储时,我就是这样做的:

import { firebase } from "./FirebaseInitialize";

const storageRef = firebase.storage().ref();

storageRef.put(file).then((snapshot) => {
  console.log("Uploaded!");
});
    

希望这有帮助。


0
投票

**

无法从 firebase/storage 导入 { getStorage } 以与 React Native Expo 图像选择器一起使用

**

使用此官方文档来使用 firebase 的存储 这是官网链接,了解如何从firebase正确实现存储或存储桶

请点击此链接

https://modularfirebase.web.app/common-use-cases/storage/

© www.soinside.com 2019 - 2024. All rights reserved.