Я думаю, это должно работать правильно.
В любом случае, вот мое решение для импорта библиотек Firebase только один раз. Я создал один файл / класс, который называется FirebaseConnector:
import * as firebase from 'firebase/app';
import 'firebase/firestore';
import 'firebase/functions';
import AppConfig from 'src/js/config/app_config';
const FUNCTIONS_REGION = 'europe-west1';
class FirebaseConnector {
static initFirebase() {
if (!firebase.apps.length) {
firebase.initializeApp(AppConfig.firebase);
}
}
static getDb() {
FirebaseConnector.initFirebase();
return firebase.firestore();
}
static getFunctions() {
FirebaseConnector.initFirebase();
return firebase.app().functions(FUNCTIONS_REGION);
}
}
export default FirebaseConnector;
Когда бы я ни использовал что-либо из API Firebase, я просто импортирую этот соединитель и использую объекты, которые возвращают мои FirebaseConnector.getDb()
и FirebaseConnector.getFunctions()
, например.:
import FirebaseConnector from './firebase_connector';
// ...
const sendEmail = FirebaseConnector.getFunctions().httpsCallable('sendEmail');
// ...