Необработанное отклонение (ошибка типа): firebase_приложение__ВЕБ-ПАКЕТ_ИМПОРТИРОВАННЫЙ_МОДУЛЬ_18__.по умолчанию.авторизация(…).updateProfile не является функцией

# #javascript #reactjs #firebase #firebase-authentication

Вопрос:

Поэтому я сделал выбор аватара, и теперь я получаю эту ошибку, если выбираю изображение.

Он также должен отображать изображение на аватаре, но вместо этого он просто выдает мне ошибку.

Как я могу решить эту проблему и управлять ею, чтобы отобразить изображение в значке Аватара ?

Мой код:

 async function handleFileInputChange(e) {
    const files = e.target.files;
    const file = files[0];

    const storage = firebase.storage();
    const usersImageRef = storage
      .ref()
      .child(`users/${user.uid}/profilepicture.jpg`);

    const snap = await usersImageRef.put(file);

    const donwloadURL = await snap.ref.getDownloadURL();
    setDownloadURL(donwloadURL);

    await firebase.auth().updateProfile({ photoURL: donwloadURL });
  }

 <input
          accept="image/*"
          className={classes.input}
          id="contained-button-file"
          multiple
          type="file"
          onChange={handleFileInputChange}
        />
        <label>
          <IconButton>
            <Avatar
              src="../assets/ana.png"
              style={{
                margin: "10px",
                width: "60px",
                height: "60px",
              }}
            />
          </IconButton>
        </label>
 

Ошибка :

введите описание изображения здесь

Вот как это выглядит :

введите описание изображения здесь

Ответ №1:

updateProfile Метод существует на User объекте, а не на экземпляре аутентификации Firebase. Попробуйте выполнить рефакторинг функции следующим образом:

 const user = firebase.auth().currentUser // <-- .currentUser

if (user) {
  await user.updateProfile({ photoURL: donwloadURL });
} else {
  console.log("No user logged in!")
}