Ami*_*spi 27 javascript heroku firebase firebase-realtime-database
我正在尝试创建一个Heroku节点任务,从Firebase和console.log中读取数据.
我的节点脚本(位于/ bin目录中)是:
require('dotenv').config({ silent: true });
var firebase = require('firebase');
firebase.initializeApp({
serviceAccount: {
projectId: process.env.fb_projectId,
clientEmail: process.env.fb_clientEmail,
privateKey: process.env.fb_privateKey
},
databaseURL: process.env.fb_databaseURL
})
console.log(process.env.fb_privateKey);
firebase.database().ref('tasks').once('value', function(snapshot) {
console.log(snapshot.val());
process.exit();
})
Run Code Online (Sandbox Code Playgroud)
除了之外fb_privateKey,所有env变量都是正确的,因为它包含\n字符.
我的本地.env文件和Heroku环境变量都包含一个名为key的键fb_privateKey,一个值作为带有\n字符的字符串- 用".包围.
fb_privateKey="-----BEGIN PRIVATE KEY-----\nMY-PRIVATE-KEY\n-----END PRIVATE KEY-----\n"
Run Code Online (Sandbox Code Playgroud)
当我在本地运行脚本时,它会使用新行+从Firebase返回的任务向我记录私钥.但是,当我在Heroku上运行它时,(heroku run myScript)会记录带有\n字符的私钥(作为单行),并且无法从Firebase读取数据(可能是由于一个错误的私钥).有任何想法吗?
Ere*_*rem 54
我今天遇到了同样的问题.您需要通过替换\\n字符来清理读取的私钥\n.
admin.initializeApp({
credential: admin.credential.cert({
"projectId": process.env.FIREBASE_PROJECT_ID,
"private_key": process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'),
"clientEmail": process.env.FIREBASE_CLIENT_EMAIL,
}),
databaseURL: process.env.FIREBASE_DATABASE_URL,
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2742 次 |
| 最近记录: |