React Native-使用@React Native Firebase/storage将图像上载到Firebase-无Firebase应用程序';[默认]';已经创建了
将图像上载到Firebase时,我遇到以下错误: 错误:未创建Firebase应用程序“[DEFAULT]”-调用Firebase.initializeApp() 这是我的密码: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
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
行失败
我不明白问题出在哪里,因为我正在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文件中时,您需要调用此函数。