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

Firestore VueJS调用报错:Cannot read properties of undefined (reading 'DEADLINE_EXCEEDED')

问题描述

运行浏览器扩展端的Firestore调用代码时报错,同逻辑的NodeJS代码可以正常在Google Firestore中创建文档,需求是实现浏览器扩展侧调用Firestore接口完成文档创建。

环境配置
  • 公共依赖:NPM 6.14.15、Node.js 14.17.6、@google-cloud/firestore 4.15.1
  • 浏览器端额外依赖/环境:TypeScript 4.1.5、Chrome 86.0.4240.183
问题根因

你当前使用的@google-cloud/firestore是服务端专属SDK,仅支持Node.js等服务端环境,不兼容浏览器环境,这是问题的核心原因。Firestore支持浏览器环境调用,但需要使用浏览器端专属的Firebase SDK,不能直接复用服务端的依赖和初始化逻辑。

解决方案

步骤1:替换依赖包

浏览器扩展端卸载服务端Firestore SDK,安装浏览器端Firebase SDK:

npm uninstall @google-cloud/firestore
npm install firebase@9

步骤2:调整初始化与调用逻辑

浏览器端不能使用服务账号密钥文件初始化,需要改用Firebase客户端配置(配置可在Firebase控制台项目设置页获取),示例代码如下:

import { initializeApp } from "firebase/app";
import { getFirestore, collection, addDoc } from "firebase/firestore";

// 替换为你自己项目的客户端配置
const firebaseConfig = {
  apiKey: "你的项目API_KEY",
  authDomain: "你的项目ID.firebaseapp.com",
  projectId: "你的项目ID",
  storageBucket: "你的项目ID.appspot.com",
  messagingSenderId: "你的项目发件人ID",
  appId: "你的项目APP_ID"
};

// 初始化Firebase
const app = initializeApp(firebaseConfig);
// 初始化Firestore实例
const db = getFirestore(app);

// 文档创建调用示例
async function createDocument() {
  try {
    const docRef = await addDoc(collection(db, "你的集合名称"), {
      // 自定义文档字段
      name: "测试数据",
      timestamp: new Date()
    });
    console.log("文档创建成功,ID为:", docRef.id);
  } catch (err) {
    console.error("文档创建失败:", err);
  }
}

步骤3:配置Firestore安全规则

浏览器端调用需要配置对应安全规则开放写入权限,测试阶段可临时使用宽松规则,生产环境请替换为符合业务逻辑的权限控制规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

步骤4:调整Chrome扩展权限配置

在扩展的manifest.json中添加网络访问权限,避免请求被拦截:

{
  "permissions": [
    "https://*.googleapis.com/*",
    "https://*.firebaseio.com/*"
  ]
}
额外排查点
  • 若使用Manifest V3版本的Chrome扩展,需要额外调整内容安全策略(CSP)配置,允许访问Firebase相关服务域名,避免CSP拦截请求。
  • 核对填写的Firebase客户端配置参数,确保apiKey、projectId等参数与Firebase控制台的配置完全一致。

内容的提问来源于stack exchange,提问作者Yves-Marie Ip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:03