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

Node.js中Firebase Admin初始化报错:Cannot read property 'cert' of undefined

Firebase Admin初始化报错:TypeError: Cannot read property 'cert' of undefined

问题场景

尝试在Node.js服务器中配置Firebase Admin,deploy.js初始化代码如下:

const admin = require('firebase-admin/app');
const serviceAccount = require('../serviceAccountKey.json')

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://projectName.firebaseio.com"
});
...

运行后出现错误:

credential: admin.credential.cert(serviceAccount),
                               ^
TypeError: Cannot read property 'cert' of undefined
    at Object.<anonymous> (C:\Users\Uporabnik\hello-world\scripts\deploy.js:9:32)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47

项目的package.json内容:

{
  "name": "hardhat-project",
  "devDependencies": {
    "@nomiclabs/hardhat-ethers": "^2.0.6",
    "ethers": "^5.6.9",
    "hardhat": "^2.9.9"
  },
  "version": "1.0.0",
  "description": "hello world smart contract",
  "main": "hardhat.config.js",
  "dependencies": {
    "cors": "^2.8.5",
    "express": "^4.18.1",
    "firebase-admin": "^11.0.0"
  },
  "scripts": {
    "test": "mocha"
  },
  "author": "",
  "license": "ISC"
}

错误原因及解决办法

错误根源是Firebase Admin的导入方式错误:

你当前仅导入了firebase-admin/app模块,这个模块只包含App初始化相关方法,并不包含credential对象。因此admin.credential会是undefined,自然无法读取cert属性。

两种正确的导入方式:

  1. 导入完整的Firebase Admin模块(最直观的写法):
const admin = require('firebase-admin');
const serviceAccount = require('../serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://projectName.firebaseio.com"
});
  1. 模块化导入所需部分(更贴合现代JS写法):
const { initializeApp } = require('firebase-admin/app');
const { cert } = require('firebase-admin/credential');
const serviceAccount = require('../serviceAccountKey.json');

initializeApp({
  credential: cert(serviceAccount),
  databaseURL: "https://projectName.firebaseio.com"
});

这两种方式都能正确获取cert方法,解决报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:06:25