2016-09-14 4 views
15

मैं एक हेरोकू नोड कार्य बनाने की कोशिश कर रहा हूं जो फ़ायरबेस और 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(); 
}) 

सभी env चर सही हैं, fb_privateKey को छोड़कर, क्योंकि यह \n वर्ण हैं। " से घिरा हुआ -

दोनों अपने स्थानीय .env फ़ाइल और Heroku वातावरण चर fb_privateKey नाम के एक प्रमुख और \n पात्रों के साथ एक स्ट्रिंग के रूप कोई मान होगा।

fb_privateKey="-----BEGIN PRIVATE KEY-----\nMY-PRIVATE-KEY\n-----END PRIVATE KEY-----\n" 

जब मैं स्थानीय रूप से स्क्रिप्ट चलाता हूं, तो यह मुझे नई लाइनों + फ़ायरबेस से लौटाए गए कार्यों के साथ निजी कुंजी लॉग करता है। हालांकि, जब मैं इसे हेरोकू पर चलाता हूं, (heroku run myScript) मुझे \n वर्णों (एक पंक्ति के रूप में) के साथ निजी कुंजी लॉग करता है और फ़ायरबेस (संभवतः खराब निजी कुंजी के कारण) से डेटा पढ़ने में विफल रहता है। कोई विचार?

+2

आपको ईरम के उत्तर को सही के रूप में चिह्नित करना चाहिए। – skwny

उत्तर

23

मुझे आज भी यही समस्या थी। के साथ \\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, 
}); 
+0

यह मेरे लिए भी काम करता है। धन्यवाद :) –

संबंधित मुद्दे