Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React Native-使用@React Native Firebase/storage将图像上载到Firebase-无Firebase应用程序';[默认]';已经创建了_Firebase_React Native_Firebase Storage_React Native Firebase - Fatal编程技术网

React Native-使用@React Native Firebase/storage将图像上载到Firebase-无Firebase应用程序';[默认]';已经创建了

React Native-使用@React Native Firebase/storage将图像上载到Firebase-无Firebase应用程序';[默认]';已经创建了,firebase,react-native,firebase-storage,react-native-firebase,Firebase,React Native,Firebase Storage,React Native Firebase,将图像上载到Firebase时,我遇到以下错误: 错误:未创建Firebase应用程序“[DEFAULT]”-调用Firebase.initializeApp() 这是我的密码: App.js import * as Firebase from 'firebase'; componentDidMount() { Firebase.initializeApp(firebaseConfig); } Profile.js import * as Firebase from 'fireba

将图像上载到Firebase时,我遇到以下错误:

错误:未创建Firebase应用程序“[DEFAULT]”-调用Firebase.initializeApp()

这是我的密码:

  • App.js

    import * as Firebase from 'firebase';
    
    componentDidMount() {
        Firebase.initializeApp(firebaseConfig);
    }
    
  • Profile.js

    import * as Firebase from 'firebase';
    import rnFb from '@react-native-firebase/storage';
    
    uploadImage = localUri =>
    new Promise((resolve, reject) => {
        const localUri2 = Platform.OS === 'ios' ? localUri.replace('file://', '') : localUri;
        const fbUri = Firebase.storage().ref();
        rnFb().ref(localUri2).putFile(fbUri)
        .then(
            () => { resolve(); }
        )
        .catch(
            (e) => { reject(e); }
        );
    });
    
  • 它在
    .putFile
    行失败

    我不明白问题出在哪里,因为我正在
    App.js

    更新12/21 我添加了
    console.log(Firebase.apps.length)
    就在
    rnFb().ref(localUri2).putFile(fbUri)
    之前,输出为1…确实非常奇怪

    …如果我完全按照错误要求执行,并在
    rnFb().ref(localUri2).putFile(fbUri)
    之前调用
    firebase.initializeApp()
    ,我会得到错误:

    Firebase: Firebase App named '[DEFAULT]' already exists
    

    救命

    我认为你的
    fbUri
    是错误的。参数必须是字符串。 例如:

    firebase
    .储存
    .ref('remote_path')//要存储的远程路径
    .putFile(
    'local/ok.jpeg'//本地文件
    )
    .然后(成功CB)
    .catch(failureCb);
    
    我的理解是,
    @react native Firebase
    内部使用的Firebase SDK独立于
    Firebase
    中的普通Firebase SDK

    它可以通过以下方式暴露:

    从'@react native firebase/app'导入firebase;
    //或
    从'@react native firebase/storage'导入{firebase};
    
    应用这些更改(并简化您的代码),您将面临以下问题:

    从'@react native firebase/storage'导入存储,{firebase};
    //可能在别的地方
    firebase.initializeApp(firebaseConfig);
    uploadImage=localUri=>{
    const localUri2=Platform.OS=='ios'?localUri.replace('file://',''):localUri;
    返回storage().ref('/path/to/upload/to').putFile(localUri2)
    }
    
    您也可以使用“本机初始化”,而不是使用
    firebase.initializeApp()

    对于和。

    您是否遵循了API文档?在文档中,我似乎找不到需要手动调用的地方。
    initializeApp()

    在代码中添加一些调试日志。是否先调用initializeApp?是的,确实是先调用请提供您正在使用的RN和RN Firebase的版本。推荐的初始化应用程序的方法是为Android和iOS提供一个文件。另外,请确保在Firebase控制台上启用了存储API。“react-native”:“0.61.5”,“@react-native Firebase/Storage”:“^6.0.4”,很遗憾,这不起作用…我在fbUri上运行了toString()方法以获取完整路径…但仍然相同error@jamesmurphytoString()不是正确的方法。您必须获取文件的本地路径。如果可以的话,请回答2个问题。(1) 你是说我需要运行firebase.initializeApp()两次…一次用于@react native firebase/storage,第二次用于常规firebase(数据库和身份验证)?(2) 如何获取字符串“path to upload to”1)您根本不应该使用本机Firebase SDK。使用由
    @react native Firebase
    加载的相同Firebase SDK。2)
    /path/to/upload/to
    只是一个占位符,用于在存储中的任何位置保存文件。假设这些是个人资料图片,您可以将图像保存为
    profile pics/someUserId.png
    。文件的名称和存储位置取决于您。我使用本机Firebase SDK进行实时数据库和整个应用程序的身份验证。如果我为@react native Firebase SDK放弃本机Firebase SDK……。我需要重写我的所有代码吗?@jamesmurphy否,它应该只是一行交换,从“Firebase”使用
    import*作为Firebase从'@react native firebase/app'导入{firebase}-尽管您可能需要将
    Firebase
    更改为
    Firebase
    或使用
    {Firebase:Firebase}
    。避免
    @react-native-firebase/database
    有什么特别的原因吗?我原以为把所有的东西都移植到可观测对象上会有好处?我明白你的意思。你看到@adrianpascu的答案了吗?他提出了一个有效的观点,即在文档中没有任何地方说您需要手动调用'initializeApp()。我确实觉得奇怪,当所有选项(如api键等)都在google-services.json文件中时,您需要调用此函数。