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

Node/Express+React+Firebase Firestore操作失败报错求助

解决Firestore操作的PEM密钥错误与数据不显示问题

我来帮你拆解下当前遇到的问题,核心其实是两个关键点:Firebase服务端密钥的PEM格式配置错误,以及异步数据库操作的错误捕获逻辑有漏洞,一步步来解决:

1. 先搞定PEM密钥报错问题

这个error:0906D06C:PEM routines:PEM_read_bio:no start line报错几乎都是Firebase服务账号密钥出了问题,你可以从这几个方向排查:

  • 重新获取正确的密钥文件:
    去Firebase控制台的「项目设置」→「服务账号」页面,重新下载完整的服务账号密钥JSON文件,绝对不要手动修改文件里的内容,尤其是private_key字段——它必须包含首尾的-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----行,中间的密钥内容也不能有多余空格或换行错误。

  • 检查config.js里的Admin初始化逻辑:
    你没贴这部分代码,但这是核心环节。确保你用密钥正确初始化了Firebase Admin,示例代码应该是这样的:

    const admin = require('firebase-admin');
    // 注意路径要和你下载的密钥文件完全匹配,别写错层级
    const serviceAccount = require('./serviceAccountKey.json');
    
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      databaseURL: 'https://你的项目ID.firebaseio.com' // 替换成你的实际数据库URL
    });
    
    const db = admin.firestore();
    module.exports = { db };
    

    如果是用环境变量存储密钥内容(比如把private_key放到.env里),一定要把整个密钥字符串用双引号括起来,并且把原始的换行替换成\n,不然Node读取时会解析出错。

2. 修复异步操作的错误捕获

你的createAsin函数里,collection.add()是异步Promise,但你用了try/catch却没加await,这会导致Promise的rejection无法被catch捕获,不仅抛出UnhandledPromiseRejectionWarning,还会让你看不到数据库操作的真实错误信息。

修改后的代码应该是这样的:

const admin = require('firebase-admin')
const config = require('./config.js')

// 给函数加上async关键字
exports.createAsin = async p => {
  try {
    // 给add()加上await,等待异步操作完成
    let docRef = await config.db.collection('asins').add({
      uid: p.uid,
      asin: p.asin,
      mapPrice: p.mapPrice,
      data: []
    })
    console.log('db: ASIN created with ID', docRef.id) // 打印文档ID确认操作成功
    return p
  } catch (e) {
    console.log('db: error creating ASIN /', e)
    return null
  }
}

这样修改后,数据库操作的错误会被正确捕获并打印,你也能更精准定位问题,同时避免了未处理的Promise拒绝警告。

3. 环境版本的小建议

你的npm(6.9.0)和Node(v11.8.0)版本都比较老旧了,虽然这不是直接导致问题的原因,但旧版本可能存在一些兼容性坑,建议升级到Node的LTS版本(比如v18或v20),配套的npm版本也会同步更新,能减少很多潜在问题。

按照上面的步骤排查后,应该就能解决数据不显示和PEM错误的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:51:04