# #javascript #firebase #google-cloud-firestore
Вопрос:
Я борюсь с миграцией firebase v8 -gt; v9. У меня есть библиотека компонентов с сборником рассказов для демонстрации компонентов. Эта библиотека публикуется в виде пакета через пакеты NPM/Github.
Миграция не доставила мне никаких хлопот, кроме этого. Проблема возникает при импорте и использовании компонента ниже в моем веб-приложении.
Приведенный ниже код отлично работает в сборнике рассказов, но не удается импортировать компонент в мое веб-приложение.
const useGetLanguages = (firestoreInstance: Firestore): Response =gt; { const [loading, setLoading] = useState(false) const [data, setData] = useStatelt;ILanguage[]gt;([]) console.log('firestoreInstance: ', firestoreInstance) // Logs firestore instance const fetch = useCallback(() =gt; { if (!firestoreInstance) return setLoading(true) const collectionRef = collection(firestoreInstance, 'data') console.log('blip') // this logs fine getDoc(doc(collectionRef, 'tags')) // crashes here... .then(res =gt; { const data = res?.data()?.languages if (data) { const languages = (Object.values(data) as unknown) as ILanguage[] if (languages) { setData(languages.sort(sortBy('name'))) } } }) .finally(() =gt; { setLoading(false) }) }, [firestoreInstance])
Я изначально использовал:
getDoc(doc(firestoreInstance, 'data', 'tags'))
что также работало в сборнике рассказов, но при переходе на страницу с помощью этого крючка в моем веб-приложении я получаю эту ошибку:
Неперехваченная ошибка FirebaseError: Ожидается, что первым аргументом для collection() будет ссылка на коллекцию, ссылка на документ или хранилище FirebaseFirestore
Я читал подобные вопросы, но это не решает проблему. Любой вклад был бы очень признателен!
РЕДАКТИРОВАТЬ: Я импортирую firebase вот так:
// firebaseConfig.ts import { FirebaseOptions, initializeApp } from 'firebase/app' import { getAuth } from 'firebase/auth' import { getFirestore } from 'firebase/firestore' import { getFunctions } from 'firebase/functions' const config: FirebaseOptions = { // ...config } export const app = initializeApp(firebaseConfig) export const authInstance = getAuth(app) export const firestoreInstance = getFirestore(app) export const functionsInstance = getFunctions(app)
Затем я импортирую firestoreInstance
и передаю его функции/компоненту, импортированному из пакета.
Я попытаюсь передать саму конфигурацию и использовать ее в пакете и опубликовать результат.
Комментарии:
1. Пожалуйста, укажите, как вы импортируете Firebase.
2. @JMGelilio Я обновил вопрос информацией об импорте.
Ответ №1:
Это оказалось ошибкой с нашей стороны. Нам нужно было установить firebase в качестве peerDependency
нашего package.json
. Возникли аналогичные проблемы при переходе на MUI 5. Если кто-то еще получает неясные ошибки, которые не имеют смысла в вашей ситуации, возможно, стоит попробовать проверить, где у вас есть зависимости!