FirebaseError: Ожидается, что первым аргументом для collection() будет ссылка на коллекцию, ссылка на документ или хранилище FirebaseFirestore, переходящая на firebase v9

# #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. Если кто-то еще получает неясные ошибки, которые не имеют смысла в вашей ситуации, возможно, стоит попробовать проверить, где у вас есть зависимости!