#firebase #react-native #firebase-realtime-database #expo #react-native-ios
#база огня #реагировать-родной #firebase-база данных в реальном времени #выставка #реагировать-родной-ios
Вопрос:
Я использую Expo SDK для своего приложения для ios, когда я пытаюсь записать данные в базу данных firebase, но я получаю сообщение об ошибке. Ошибка: НЕУСТРАНИМАЯ ОШИБКА FIREBASE: не удается проанализировать URL-адрес Firebase. Пожалуйста, используйте https://.firebaseio.com*
Мой конфигурационный файл firebase
const firebaseConfig = {
apiKey: "xxxxxx",
authDomain: "xxxxxx.firebaseapp.com",
databaseURL: "https://xxxxxxxxxxxxxx.europe-west1.firebasedatabase.app",
projectId: "xxxxx",
storageBucket: "xxxxxxx.appspot.com",
messagingSenderId: "xxxxxxxxx",
appId: "xxxxxxxxxx",
measurementId: "xxxxxx"
};
моя функция, которая хранит данные, такова
signUp = () => {
const user = firebase.auth().currentUser;
let userid = user.uid;
firebase
.database()
.ref(`users/${userid}`)
.set({
firstname: this.state.firstname,
lastname: this.state.lastname,
password: this.state.password,
email: this.state.email,
dob: this.state.dob,
postcode: this.state.postcode,
})
.then(() => {
alert("user created");
})
.catch((err) => {
alert("error");
});
};
Для моих правил базы данных установлено значение true для чтения и записи.
Я пробовал следующий URL-адрес базы данных, но ни один из них не работает.
const firebaseConfig = {
databaseURL: "https://xxxxxxxxxxxxxx.europe-west1.firebaseio.com",
};
const firebaseConfig = {
databaseURL: "https://xxxxxxxxxxxxxx.firebaseio.com",
};
Ищу помощи, пожалуйста
Комментарии:
1. Это действительно помогло бы точно увидеть, откуда исходит сообщение об ошибке. Но я бы рекомендовал явно передавать URL-адрес в инициализацию базы данных с помощью:
firebase.database().ref("https://<DATABASE_NAME>.firebasedatabase.app")
в качестве обходного пути в любом случае.2. @FrankvanPuffelen Я пробовал это, это дает мне ту же ошибку
Ответ №1:
поджигатель здесь
Каким-то образом Expo, похоже, привязывает вас к Firebase SDK версии 7.9, которая была выпущена в феврале 2020 года. firebasedatabase.app
Насколько я вижу, это предшествовало добавлению URL-адресов, которое произошло в мае 2020 года и было выпущено в версии 7.15.4 JavaScript SDK.
Проблема исчезает, когда я обновляю зависимость SDK до версии 7.14.5, несмотря на то, что редактор закусок Expo выдает ошибку, когда я это делаю:
{
"dependencies": {
"react-native-paper": "3.6.0",
"expo-constants": "~9.3.1",
"firebase": "7.14.5"
}
}
Моя рекомендация заключалась бы в обновлении до последних версий SDK, как показано в фрагментах конфигурации в консоли Firebase и документации.
Комментарии:
1. Я обновляю свою зависимость, и она по-прежнему выдает ту же ошибку. Мои зависимости таковы
{ "@expo/vector-icons": "^12.0.0", "expo": "~40.0.0", "expo-constants": "^9.3.5", "expo-firebase-recaptcha": "^1.3.0", "expo-font": "~8.4.0", "expo-linking": "~2.0.0", "expo-splash-screen": "~0.8.0", "expo-status-bar": "~1.0.3", "expo-web-browser": "~8.6.0", "firebase": "^7.14.5", "react": "16.13.1", "react-dom": "16.13.1", "react-native": "https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz" }
2. Это интересно, так как это работает для меня здесь: snack.expo.io/ij7acLi0V
3. да, это очень странно. Я использую последнюю зависимость SDK, и я не уверен, что не так. Я буду продолжать отлаживать его
4. Привет, @gangataarun. Добились ли вы здесь какого-либо прогресса? Учитывая, что я смог воспроизвести сообщение с версией Firebase SDK и смог исправить его, обновив до более новой версии, я совершенно убежден, что это должно быть связано с версией. Если вы еще не починили его, не могли бы вы воспроизвести его в качестве закуски на выставке, чтобы я мог взглянуть?
Ответ №2:
Обновление пакета Firebase до последней версии устраняет проблему
"firebase": "^8.2.3"
Ответ №3:
Вы инициализировали конфигурацию? Что-то вроде этого.
import firebase from 'firebase/app';
import 'firebase/firestore';
import 'firebase/database';
import 'firebase/auth';
import 'firebase/storage';
import 'firebase/functions';
interface ConfigProps {
apiKey: string;
authDomain: string;
databaseURL: string;
projectId: string;
storageBucket: string;
messagingSenderId: string;
appId: string;
}
const config: ConfigProps = {
apiKey: '******************',
authDomain: '******************',
databaseURL: '******************',
projectId: '******************,
storageBucket: '******************',
messagingSenderId: '******************',
appId: '******************',
};
firebase.initializeApp(config);
firebase.firestore();
export default firebase;
Комментарии:
1. да, я инициализировал конфигурацию, которую я вызываю в своем app.js
import * as firebase from "firebase"; import firebaseAppconfig from "./variables/firebase"; // PROVIDE VALID FIREBASE CONFIG HERE // https://firebase.google.com/docs/web/setup const FIREBASE_CONFIG: any = firebaseAppconfig; try { if (FIREBASE_CONFIG.apiKey) { firebase.initializeApp(FIREBASE_CONFIG); } } catch (err) { // ignore app already initialized error on snack }