【问题标题】:Firebase fails to parse private key in productionFirebase 无法解析生产中的私钥
【发布时间】:2021-12-29 02:18:40
【问题描述】:

我没有传入实际的 JSON,而是从 .env 检索键值并手动设置它们 similar to this。 在本地测试时,一切正常。在使用 Elastic Beanstalk 的生产环境中,初始化失败:

12 月 29 日 01:23:41 ip-000-00-00-000 网络:/var/app/current/node_modules/firebase-admin/lib/app/credential-internal.js:143

Dec 29 01:23:41 ip-000-00-00-000 web: throw new error_1.FirebaseAppError(error_1.AppErrorCodes.INVALID_CREDENTIAL, 'Failed to parse private key:' + error);

12 月 29 日 01:23:41 ip-000-00-00-000 web:FirebaseAppError:无法解析私钥:错误:仅支持 8、16、24 或 32 位:528

12 月 29 日 01:23:41 ip-000-00-00-000 web:在 FirebaseAppError.FirebaseError [作为构造函数] (/var/app/current/node_modules/firebase-admin/lib/utils/error.js :44:28)

唯一的区别是,我从 Elastic Beanstalk 中提取环境变量,而不是本地 .env

还有其他的:

config.js:

const dotenv = require('dotenv');
dotenv.config();

const {PORT, TYPE, PROJECT_ID, PRIVATE_KEY_ID, PRIVATE_KEY, ... } = process.env;

module.exports = {
    port: PORT,
    firebaseConfig: {
        type: TYPE,
        projectId: PROJECT_ID,
        privateKeyId: PRIVATE_KEY_ID,
        privateKey: PRIVATE_KEY.replace(/\\n/g, '\n'),
        clientEmail: CLIENT_EMAIL,
        ...
    }
}

db.js:

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

const db = firebase.initializeApp({
    credential: firebase.credential.cert(config.firebaseConfig)
});

module.exports = db;

提前致谢!

【问题讨论】:

    标签: node.js firebase google-cloud-firestore environment-variables amazon-elastic-beanstalk


    【解决方案1】:

    已解决。这是一个简单的 Elastic Beanstalk 案例,它从环境变量中删除所有转义字符,并使私钥成为一个很长的字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 2021-12-14
      • 2018-10-22
      • 2017-03-06
      • 2021-02-22
      • 2018-10-22
      • 2022-06-26
      相关资源
      最近更新 更多