React Native - 使用@react-native-firebase/storage 将图像上传到 Firebase - 没有创建 Firebase 应用“[DEFAULT]”
React Native - upload image to Firebase using @react-native-firebase/storage - No Firebase App '[DEFAULT]' has been created
我在将图片上传到 Firebase 时遇到以下错误:
Error: No Firebase App '[DEFAULT]' has been created - call 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
中调用 .initializeApp()
12 月 21 日更新
我在 rnFb().ref(localUri2).putFile(fbUri)
之前添加了 console.log(Firebase.apps.length);
并且输出是 1...确实很奇怪。
...如果我完全按照错误要求做,并在 rnFb().ref(localUri2).putFile(fbUri)
之前调用 firebase.initializeApp()
,我会收到错误错误:
Firebase: Firebase App named '[DEFAULT]' already exists
求助!!
我认为你的fbUri
是错误的。参数必须是一个字符串。
例如:
firebase
.storage()
.ref('remote_path') // remote path where you want to store
.putFile(
'local/ok.jpeg' // local file
)
.then(successCb)
.catch(failureCb);
我的理解是 @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)
}
除了使用 "client initialization" 使用 firebase.initializeApp()
,您还可以使用 "native initialization"
Android and iOS.
您是否遵循了 API 文档?我似乎无法在文档中的任何地方找到您需要手动调用 initializeApp()
我在将图片上传到 Firebase 时遇到以下错误:
Error: No Firebase App '[DEFAULT]' has been created - call 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
.initializeApp()
12 月 21 日更新
我在 rnFb().ref(localUri2).putFile(fbUri)
之前添加了 console.log(Firebase.apps.length);
并且输出是 1...确实很奇怪。
...如果我完全按照错误要求做,并在 rnFb().ref(localUri2).putFile(fbUri)
之前调用 firebase.initializeApp()
,我会收到错误错误:
Firebase: Firebase App named '[DEFAULT]' already exists
求助!!
我认为你的fbUri
是错误的。参数必须是一个字符串。
例如:
firebase
.storage()
.ref('remote_path') // remote path where you want to store
.putFile(
'local/ok.jpeg' // local file
)
.then(successCb)
.catch(failureCb);
我的理解是 @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)
}
除了使用 "client initialization" 使用 firebase.initializeApp()
,您还可以使用 "native initialization"
Android and iOS.
您是否遵循了 API 文档?我似乎无法在文档中的任何地方找到您需要手动调用 initializeApp()