2015-12-15 136 views
0

我在Node.JS .env中有一些環境變量,包括AUTH0_CLIENT_ID和AUTH0_CLIENT_SECRET。Node.JS環境變量沒有設置?

我添加auth0支持到客戶端:

var jwt = require('express-jwt'); 
var authenticate = jwt({ 
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'), 
    audience: process.env.AUTH0_CLIENT_ID 
}); 

運行時我的實驗或者使用$節點experiment.js或從NPM [中的package.json加入相應的條目腳本後,我得到一個錯誤:

buffer.js:139 
throw new TypeError('must start with number, buffer, array or string'); 

我的猜測是環境變量沒有被拾取。我做錯了什麼,或/和我應該檢查什麼?

+0

是你運行在服務器上還是本地? – hkasera

+0

在此之前,你應該在你的系統中設置環境變量:) –

+0

你使用[this](https://github.com/motdotla/dotenv)嗎? –

回答

0

事實上,你把它們放在一個文件中並不意味着它們會被加載。你需要將它們傳遞給NodeJS。可以使用一些軟件包來管理配置文件和環境變量(nconf,dotenv),或者在運行服務時直接傳遞它(這更好,因爲出於安全原因,保密的文件應該保存在任何類型的文件中)。如果你選擇第二個,它幾乎取決於你正在運行的系統。如果您使用的是Windows,你應該先設置(在CMD)環境變量:

set AUTH0_CLIENT_SECRET=test 
node app.js 

在基於Unix的系統,你可以直接通過它:

AUTH0_CLIENT_SECRET=test node app.js 

希望幫助:)

+0

我不確定你使用set會在bash中工作。我做了導出,並且確實設置了變量。節點和/或npm自動從當前目錄加載.env文件? –

+0

我看了看文檔。事實上,我需要手動要求('dotenv')。load();使用.env。得到它了。謝謝。 –