我在我的.env文件中使用app.js变量来访问密钥。在我下载了一个新的Firebase Service Account Private Key之前,一切都很顺利。当我用新值替换旧值时,我无法再访问键,因为在terminal中,当我运行node app.js时,我总是收到一条错误消息:
/Users/Cpu/Desktop/...../node_modules/firebase-admin/lib/auth/credential.js:129抛出新的error_1.FirebaseAppError(error_1.AppErrorCodes.INVALID_CREDENTIAL,‘未能解析私钥:’+error_1.FirebaseAppError(error_1.AppErrorCodes.INVALID_CREDENTIAL,);^ 错误:解析私钥失败:错误:无效的PEM格式化消息。在FirebaseAppError.FirebaseError 作为构造函数 at FirebaseAppError.PrefixedFirebaseError 作为构造函数 at new FirebaseAppError/firebase-admin/lib/auth/credential.js:192:64) at Object.cert (/Object.cert/Cpu/Desktop/.)在对象上。(/User/Cpu/Desktop/./app.js:14:32)在Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at FirebaseAppError.FirebaseError作为构造函数npm ERR!代码ELIFECYCLE npm错误!错误号1
我所做的就是c+p新的Private Key,然后添加它并保存.env文件,然后推到heroku,它就不再工作了。我甚至下载了一个新的Private Key,但同样的问题也发生了。
新旧二等钥匙
// old Private Key
-----BEGIN PRIVATE KEY-----\nbbbbbbbb\n-----END PRIVATE KEY-----\n
// new Private Key
-----BEGIN PRIVATE KEY-----\nzzzzzzzz\n-----END PRIVATE KEY-----\n.env文件:
FIREBASE_PROJECT_ID=wwwwwwww
FIREBASE_CLIENT_EMAIL=xxxxxxxx
FIREBASE_DATABASE_URL=yyyyyyyy
FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\nzzzzzzzz\n-----END PRIVATE KEY-----\napp.js文件:
const dotenv = require('dotenv');
dotenv.load();
var admin = require("firebase-admin");
admin.initializeApp({
  credential: admin.credential.cert({
      projectId: process.env.FIREBASE_PROJECT_ID,   // I get no error here
      clientEmail: process.env.FIREBASE_CLIENT_EMAIL,   // I get no error here
      privateKey: process.env.FIREBASE_PRIVATE_KEY   // I get error HERE
  }),
  databaseURL: process.env.FIREBASE_DATABASE_URL
});如何解决这个问题?
发布于 2022-08-30 13:01:35
对我来说,我只是将整个服务放在我的.env文件中,如下所示:
.env
FIREBASE_ADMIN_API={"type":..."private_key":"..."...}然后我像这样导入它:
server.ts
const firebase_admin_config = JSON.parse(process.env.FIREBASE_ADMIN_API);
getApps().length === 0 ? initializeApp({
  credential: credential.cert(firebase_admin_config)
}) : getApp();https://stackoverflow.com/questions/50299329
复制相似问题