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

Firebase v9使用官方示例代码报await为保留字问题如何解决

问题原因及解决方案

错误1:await is reserved word 报错原因

await 关键字仅可在被 async 标记的函数作用域内使用,你直接在全局作用域、普通同步函数中使用 await 就会触发该报错。

错误2:包裹async匿名函数后功能不生效原因

你只完成了异步函数的定义,没有触发函数执行,内部代码从未运行,自然没有对应效果。

修复方案

方案1:使用立即执行异步函数表达式(IIFE)

适合直接在顶层作用域运行的场景,给定义好的匿名异步函数收尾加调用标记即可,代码示例如下:

// 注意末尾的()代表立即执行该函数
(async () => {
  try {
     const docRef = await addDoc(collection(db, "projects", vm.add.slug), {
      first: "Alan",
      middle: "Mathison",
      last: "Turing",
      born: 1912
    })
    console.log("Document written with ID: ", docRef.id)
  } catch (err) {
    // 注意这里原代码日志写的是「error deleting data」属于笔误,建议修正避免排查问题时被误导
    console.log("error adding document:", err)
  }
})()

方案2:绑定到对应触发逻辑

如果这段代码是需要在点击事件、框架生命周期等时机触发,直接把对应的处理函数标记为async即可,不需要额外嵌套匿名函数,示例如下(以Vue点击事件为例):

// 提交表单时触发写入
const handleFormSubmit = async () => {
  try {
     const docRef = await addDoc(collection(db, "projects", vm.add.slug), {
      first: "Alan",
      middle: "Mathison",
      last: "Turing",
      born: 1912
    })
    console.log("Document written with ID: ", docRef.id)
  } catch (err) {
    console.log("error adding document:", err)
  }
}

额外排查点

如果修改后仍无法正常写入,可按顺序排查以下项:

  • Firebase的db实例是否完成初始化
  • Firestore的权限规则是否允许当前用户对目标路径执行写入操作
  • collection(db, "projects", vm.add.slug) 路径是否符合你预期的集合结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:27:01