【发布时间】:2020-02-18 02:10:56
【问题描述】:
npm v6.12.0
node v10.16.0
我正在为我的应用程序使用 firebase sdk。在我今天更改所有服务器信息之前,我从来没有遇到过这个问题。这是我尝试通过我的应用程序远程访问代码时得到的 Heroku 错误日志
TypeError: 无法读取未定义的“替换”属性
我跑$ heroku logs --app myAppName:
2019-10-21T21:07:12.988431+00:00 app[web.1]: privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'),
2019-10-21T21:07:12.988433+00:00 app[web.1]: ^
2019-10-21T21:07:12.988435+00:00 app[web.1]:
2019-10-21T21:07:12.988436+00:00 app[web.1]: TypeError: Cannot read property 'replace' of undefined
但是当我从终端运行node app.js 或本地运行时,一切正常。此外,当我从终端运行 npm start 时,一切正常。这个问题的原因可能是什么?
代码如下:
const admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert({
projectId: process.env.FIREBASE_PROJECT_ID,
privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'),
clientEmail: process.env.FIREBASE_CLIENT_EMAIL
}),
databaseURL: process.env.FIREBASE_DATABASE_URL,
databaseAuthVariableOverride: {
uid: process.env.MY_CUSTOM_TOKEN
}
});
在我添加到.gitignore 的.env 文件中
FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----xxxxx\n-----END PRIVATE KEY-----\n
我也试过了:
// removed the .replace(/\\n/g, '\n')
privateKey: process.env.FIREBASE_PRIVATE_KEY
在 .env 文件中:
// I added quotes
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----xxxxx\n-----END PRIVATE KEY-----\n"
Cannot read property 'replace' of undefined 是什么意思? 它不能是 FIREBASE_PRIVATE_KEY 的值,因为当我运行 node app.js 或 npm start 时,我会收到我不知道的错误不。
【问题讨论】: