I think you have a bad project structure. I give you my example:
// react-create-app structure
src --|
|-- index.js
|-- firebaseConfig.js
|-- firebaseApp.js
|-- App.js
|-- ExampleComponent.js
Try it.
// src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root'),
);
Your firebase app info file
// src/firebaseConfig.js
const firebaseConfig: Object = {
apiKey: 'xxx',
authDomain: 'xxx.firebaseapp.com',
projectId: 'xxx-project',
storageBucket: 'xxx.appspot.com',
messagingSenderId: 'xxx',
appId: 'xxx',
// measurementId: 'xxx', // I don't enable google analytics for this project
};
export default firebaseConfig;
Example a FirebaseApp file
// src/firebaseApp.js
import firebase from 'firebase/app';
import 'firebase/firestore';
import 'firebase/functions';
import 'firebase/auth';
import firebaseConfig from './firebaseConfig'; // Your firebase app config
const app = firebase.initializeApp(firebaseConfig);
export default app;
Next file is App.js
// src/App.js
import React from 'react';
import { FirebaseAppProvider } from 'reactfire';
import firebaseApp from './firebaseApp';
import ExampleComponent from './ExampleComponent';
const App = () => {
return (
<FirebaseAppProvider firebaseApp={firebaseApp}>
<ExampleComponent />
</FirebaseAppProvider>
);
};
export default App;
Component example code:
// src/ExampleComponent.js
import React from 'react';
import { useFirestore } from 'reactfire';
const ExampleComponent = () => {
const firestore = useFirestore();
console.log(firestore.collection('your_collection_name')); // Working good
return <>Hello reactfire App</>;
};
export default ExampleComponent;