2015-12-15 138 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。得到它了。谢谢。 –