尝试通过反应上传到 Firebase 存储。 TypeError:无法读取未定义的属性(读取'ref')

Posted

技术标签:

【中文标题】尝试通过反应上传到 Firebase 存储。 TypeError:无法读取未定义的属性(读取\'ref\')【英文标题】:Trying to upload to firebase storage with react. TypeError: Cannot read properties of undefined (reading 'ref')尝试通过反应上传到 Firebase 存储。 TypeError:无法读取未定义的属性(读取'ref') 【发布时间】:2022-01-07 14:04:02 【问题描述】:

这是下面的代码。控制台日志告诉我它正在正确读取图像,但 firebase.storage 由于某种原因未定义。

import React from 'react';
import firebase from 'firebase/compat/app';
import "firebase/storage";

function ProfilePic() 


    const [image , setImage] = React.useState('');

    const upload = ()=>
    if (image == null) return;
        console.log(image);
        const ref = firebase.storage.ref(`images/$image.name`);
        ref.put(image).on("state_changed" , alert("success") , alert);
        
    
  
  return (
    <div className="App">
      <center>
      <input type="file" onChange=(e)=>setImage(e.target.files[0])/>
      <button onClick=upload>Upload</button>
      </center>
    </div>
  );


export default ProfilePic;

【问题讨论】:

【参考方案1】:

您需要导入旧的命名空间库才能按照您的预期使用它。

import "firebase/compat/storage";

通过使用"firebase/storage",您最终会改为导入现代模块化 SDK。

您还需要使用调用firebase.storage() 来获取其实例而不是命名空间:

const ref = firebase.storage().ref(`images/$image.name`);

【讨论】:

然后我得到错误:TypeError: firebase_compat_app__WEBPACK_IMPORTED_MODULE_2__.default.storage.ref is not a function @Kris 查看更新。

以上是关于尝试通过反应上传到 Firebase 存储。 TypeError:无法读取未定义的属性(读取'ref')的主要内容,如果未能解决你的问题,请参考以下文章

在本机反应中从数组上传数据到 Firebase 存储和 Firebase 数据库

将图像从颤振上传到火力基地(没有任何反应)

HOC 反应 redux firebase。 (错误:上传文件需要 Firebase 存储)

使用 multer 将图像上传到 Firebase 存储问题

TypeError:无法读取未定义 Firebase 存储反应的属性“参考”

尝试将图像上传到 Firebase 存储时出错