You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blob类构造函数私有无法访问,Firebase导入Blob注入报错求助

解决Firebase Blob构造函数私有导致的注入错误

你遇到的核心问题是:Blob类(无论是浏览器原生的还是Firestore导出的)的构造函数被设计为私有/受保护,不允许通过外部直接实例化,更不能通过Angular的依赖注入系统来注入它。你的代码里尝试把Blob作为依赖注入到ImagehandlerProvider的构造函数中,这完全违背了它的设计意图。

修复步骤:

  1. 移除构造函数中的Blob注入
    首先把构造函数里的public blob: Blob参数删掉,因为你根本不需要通过DI来获取Blob实例。修改后的构造函数如下:

    constructor(public filechooser: FileChooser) {
      console.log('Hello ImagehandlerProvider Provider');
    }
    
  2. 正确创建Blob实例
    当你在uploadimage方法中需要使用Blob时,要通过Firestore提供的静态方法或者原生API来创建实例:

    • 如果是使用Firestore的Blob(从@firebase/firestore-types导入的),应该用它的静态工厂方法,比如Blob.fromUint8Array():
      // 假设你已经获取到文件的二进制数据(比如Uint8Array)
      const fileBuffer = new Uint8Array(/* 你的文件二进制数据 */);
      const firestoreBlob = Blob.fromUint8Array(fileBuffer);
      
    • 如果是使用浏览器原生Blob来处理文件上传到Storage,直接用原生构造函数即可:
      // 假设你读取了文件的内容(比如ArrayBuffer)
      const fileContent = /* 文件内容 */;
      const nativeBlob = new Blob([fileContent], { type: 'image/png' }); // 指定文件MIME类型
      

为什么会报错?

Angular的依赖注入系统会尝试为你注入的每个依赖创建实例,但Blob类的构造函数被限制为仅能在类内部访问(私有),DI系统无法调用它的构造函数来生成实例,因此抛出了这个错误。Blob是一个数据类型类,不是Angular服务,不需要也不能通过DI来获取。

内容的提问来源于stack exchange,提问作者ken4ward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:49:41