我試圖創建一個從Firebase和console.log中讀取數據的Heroku節點任務。Firebase privateKey作爲Heroku配置變量的轉義問題
我的節點腳本(位於/ 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();
})
所有ENV變量是正確的,除了fb_privateKey
,因爲它包含\n
字符。
我的兩個地方.env
文件和Heroku的環境變量包含一個名爲fb_privateKey
鍵和值與\n
字符的字符串 - 與"
包圍。
fb_privateKey="-----BEGIN PRIVATE KEY-----\nMY-PRIVATE-KEY\n-----END PRIVATE KEY-----\n"
當我在本地運行腳本時,它會用新行+從Firebase返回的任務記錄我的私鑰。然而,當我在Heroku上運行它時,(heroku run myScript
)會以\n
個字符(作爲單行)將我的私鑰記錄到日誌中,並且無法從Firebase讀取數據(可能是由於私鑰損壞)。有任何想法嗎?
你應該將Erem的答案標記爲正確的。 – skwny