# #reactjs #firebase #google-cloud-firestore
Вопрос:
У меня есть новый проект с использованием firebase. Я создал 2 файла,
firebase.js
import firebase from "firebase/app";
import "firebase/storage";
import "firebase/firestore";
const firebaseConfig = {
apiKey: "x",
authDomain: "x",
projectId: "x",
storageBucket: "x",
messagingSenderId: "x",
appId: "x",
measurementId: "x",
};
firebase.initializeApp(firebaseConfig);
export default firebase;
и App.js
import React, { useEffect, useState, useRef } from "react";
import firebase from "./firebase";
export default function App() {
const [urlVideo, setUV] = useState();
useEffect(() => {
getRoom();
console.log("TEST");
}, []);
const getRoom = async () => {
firebase
.firestore()
.collection("abc")
.add({
room: Math.floor(Math.random() * 10000),
createdAt: firestore.FieldValue.serverTimestamp(),
})
.then(() => {
console.log("Room added!");
});
};
return (
<div>
</div>
);
}
и когда я запускаю свой проект, я получаю эту ошибку. Пожалуйста, обратитесь к изображению ниже.
я понимаю, почему это произошло, потому что у меня уже было несколько проектов с firebase раньше, и я сравнил их с другим проектом (кодом) и понял, что нет никакой разницы с моим последним проектом, использующим firebase.
Я использую
«огневая база»: «^8.7.0»,
ребята, вы можете мне помочь? большое спасибо!
Комментарии:
1. Ну, это довольно очевидно , что вы пытаетесь использовать
firestore
, но вы никогда не определялиfirestore
2. Эй, спасибо за ваш комментарий.. я думаю, что у меня есть проблема..
3. Вам следует подумать об использовании надлежащего редактора, который будет уведомлять вас о таких ошибках во время написания кода.
4. Да, я думаю, что ты прав! спасибо за ваш совет..
Ответ №1:
Вот в чем проблема:
createdAt: firestore.FieldValue.serverTimestamp()
^^^^^^^^^
Пространство имен нигде не определено, поэтому вам также придется экспортировать его.
Рефакторинг firebase.js вот так:
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig);
}
const firestoreNamespace = firebase.firestore
export {firebase, firestoreNamespace};
App.js:
import { firebase, firestoreNamespace } from "./firebase"
// Now you can use the namespace like this
createdAt: firestoreNamespace.FieldValue.serverTimestamp()
Комментарии:
1. Чувак, у тебя идеальный глаз :)) да, в этом-то и проблема! большое спасибо!