React Native-使用@ react-native-firebase / storage将图像上传到Firebase-未创建Firebase应用'[DEFAULT]'

时间:2019-12-18 03:46:41

标签: firebase react-native firebase-storage react-native-firebase

将图像上传到Firebase时出现以下错误:

  

错误:尚未创建Firebase应用'[DEFAULT]'-调用firebase.initializeApp()

这是我的代码:

  1. App.js

    Object.defineProperty(Object.prototype, 'json', {
        configurable: true, enumerable: false, writable: true,
        value: function() { return 'Object.json' }
    });
    
    function Body() {
        return 1
    }
    
    Object.defineProperty(Body.prototype, 'json', {
        configurable: true, enumerable: false, writable: true,
        value: function() { return 'Body.json' }
    });
    
    console.log(new Body().json()); // "Body.json"
  2. Profile.js

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

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中呼叫.initializeApp()

更新12/21 我在App.js之前添加了console.log(Firebase.apps.length);,输出为1 ...确实很奇怪。

...并且如果我完全按照错误要求进行操作,并在rnFb().ref(localUri2).putFile(fbUri)之前致电firebase.initializeApp(),则会收到错误错误:

rnFb().ref(localUri2).putFile(fbUri)

帮助!

3 个答案:

答案 0 :(得分:1)

我的理解是@react-native-firebase内部使用的Firebase SDK与firebase中的普通Firebase SDK无关。

可以使用以下方法进行暴露:

import firebase from '@react-native-firebase/app';
// OR
import { firebase } from '@react-native-firebase/storage';

应用这些更改(并简化代码),您将得到以下内容:

import storage, { firebase } from '@react-native-firebase/storage';

// can possibly be somewhere else
firebase.initializeApp(firebaseConfig);

uploadImage = localUri => {
  const localUri2 = Platform.OS === 'ios' ? localUri.replace('file://', '') : localUri;
  return storage().ref('/path/to/upload/to').putFile(localUri2)
}

除了使用firebase.initializeApp()来使用"client initialization"之外,您还可以使用“本机初始化”  AndroidiOS

答案 1 :(得分:1)

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

的任何地方

答案 2 :(得分:-1)

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

    firebase
          .storage()
          .ref('remote_path') // remote path where you want to store
          .putFile(
            'local/ok.jpeg' // local file
          )
          .then(successCb)
          .catch(failureCb);