«firestore» не определен, нет-не определено

# #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. Чувак, у тебя идеальный глаз :)) да, в этом-то и проблема! большое спасибо!