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

Firebase Storage调用getDownloadURL时如何正确获取错误code与message

Firebase Storage错误字段取值方案

你遇到的取值异常是因为Firebase抛出的FirebaseError是封装后的错误实例,你在控制台看到的嵌套HTTP响应内容没有直接挂载到错误实例的根属性,所以无法直接通过error.code获取到404这类HTTP状态码。

具体取值方法

第一步:确认你使用的SDK版本对应字段

先执行以下代码打印错误实例的全量结构化属性,确认字段存储位置:

fileRef
  .getDownloadURL()
  .then((url) => {
    // 业务代码
  })
  .catch((error) => {
    // 序列化打印全量属性,避免浏览器控制台自动拼接内容的干扰
    console.log(JSON.stringify(error, null, 2))
  })

第二步:通用兼容取值代码

适配Web SDK v8/v9/v10绝大多数版本的取值写法如下:

fileRef
  .getDownloadURL()
  .then((url) => {
    // 业务代码
  })
  .catch((error) => {
    // 可选链判空避免属性不存在时报错
    // Firebase Storage专属业务错误码,对应示例中的storage/object-not-found
    const storageErrorCode = error?.code
    // HTTP响应状态码,对应示例中的404
    const httpStatusCode = error?.serverResponse?.error?.code || error?.customData?.error?.code
    // HTTP响应错误信息,对应示例中的Not Found.
    const httpErrorMsg = error?.serverResponse?.error?.message || error?.customData?.error?.message

    console.log('Storage业务错误码:', storageErrorCode)
    console.log('HTTP状态码:', httpStatusCode)
    console.log('HTTP错误信息:', httpErrorMsg)
  })

补充说明

  • 你直接在控制台打印error时看到的嵌套JSON内容,是浏览器对Error实例做的自动格式化输出,这部分内容不属于错误实例的根属性,必须从Firebase预留的响应属性中提取才能正常取值。
  • 如果你需要的是storage/object-not-found这类Firebase Storage自定义业务错误码,error.code本身可以直接取值,若无法取值请检查是否在代码上游对error对象做了二次修改/序列化导致原始实例丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:06:08