Я получаю ошибку в React при подключении его к firebase «Не удалось найти модуль в пути: ‘firebase’ относительно ‘/src/firebase-config.js»»

# #javascript #reactjs #firebase

Вопрос:

Это ошибка, которую я получаю:- ошибка Это мой первый раз, когда я использую Firebase, поэтому я мало что знаю об этом. Но после просмотра некоторых учебных пособий кажется, что это правильный путь, но ничего не работает. Я использую последнюю версию firebase. Пару раз устанавливал и удалял firebase, но ничего не происходило.

 //App.js
import React, { useState, useEffect } from "react";
import Todo from "./Todo";
import { Button, FormControl, Input, InputLabel } from "@material-ui/core";
import "./App.css";
import db from "./firebase-config";


function App() {
  const [todos, setTodos] = useState([
    
  ]);
  const [input, setInput] = useState("");

  useEffect(() => {
    // this code fires when the app loads
    db.collection("todos").onSnapshot(snapshot => {
      console.log(snapshot.docs.map(doc => doc.data()));
      // setTodos(snapshot.docs.map(doc => doc.data().todo))
    })
  }, [])

  const addTodo = (e) => {
    e.preventDefault();
    setTodos([...todos, input]);
    setInput("");
  };

  return (
    <div className="App">
      <h1>React Todo with Firebase</h1>
      <form>
        <FormControl>
          <InputLabel>✅Write a Todo...</InputLabel>
          <Input onChange={(e) => setInput(e.target.value)} value={input} />
        </FormControl>
        <Button
          disabled={!input}
          type="submit"
          onClick={addTodo}
          variant="contained"
          color="primary"
        >
          Add Todo
        </Button>
      </form>

      <ul>
        {todos.map((todo) => (
         <Todo text={todo} />
        ))}
      </ul>
    </div>
  );
}

export default App;

//firebase-config.js

import firebase from 'firebase';

const firebaseApp = firebase.initializeApp({
    apiKey: "AIzaSsdfsdfBbWj6IbdKr0la5cx4k75fcS_qvMU",
    authDomain: "todo-app-8sdf10.firebaseapp.com",
    projectId: "todo-app-sdf110",
    storageBucket: "todo-app-8sdf10.appspot.com",
    messagingSenderId: "26sdfreact6661358",
    appId: "1:260256sdf358:web:99eafsdfbd6099cb748b7f",
    measurementId: "G-EH6HsdfHRD5R"
});

const db = firebaseApp.firestore();
export default db;
 

Комментарии:

1. пожалуйста, не публикуйте свои ключи api в stackoverflow

Ответ №1:

Попробуйте изменить свой импорт на:

 import firebase from 'firebase/compat/app';
 

Таким образом, вы можете продолжать использовать существующий код/синтаксис. Хотя я рекомендую ознакомиться с новым модульным SDK, который имеет другой синтаксис, но имеет преимущества в производительности.

Комментарии:

1.Спасибо за помощь, приведенный ниже код сработал! import firebase from 'firebase/compat/app'; import 'firebase/compat/firestore';

2. Эй, @PavanSargar, если мой ответ был полезен, вы можете принять его, нажав на значок✔.

Ответ №2:

Из документации firebase : https://firebase.google.com/docs/firestore/quickstart#web-version-9

 import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
 

Затем вы можете инициализировать свое приложение, выполнив следующие действия :

 const firebaseApp = initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

const db = getFirestore();
 

Также обратите внимание, что вы не должны делиться переменными конфигурации вашего проекта подобным образом.

Комментарии:

1. Спасибо, я попробую это решение. Кстати, я немного изменил переменные конфигурации перед тем, как поделиться.

2.Спасибо за помощь, приведенный выше код все равно выдал мне ошибку, но этот сработал import firebase from 'firebase/compat/app'; import 'firebase/compat/firestore';