将图像上传到Firebase时出现以下错误:
错误:尚未创建Firebase应用'[DEFAULT]'-调用firebase.initializeApp()
这是我的代码:
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"
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)
帮助!
答案 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"之外,您还可以使用“本机初始化”
Android和iOS。
答案 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);