应用程序

时间:2017-01-15 07:05:36

标签: node.js

我正在使用需要秘密字符串的库。我已经设置了我的节点变量:

export JWT_SECRET=e177920e88165bd0090b1c6b544cf7

但是,当我尝试在我的应用中使用它时,就像这样:

const jwt = require('jsonwebtoken');

function userToken(user) {
  return jwt.sign({
    user: user.id,
  }, process.env.JWT_SECRET);
}

它会发出一个错误,指出秘密必须是字符串或缓冲区。我认为节点变量是字符串,所以不确定问题是什么。谢谢。

4 个答案:

答案 0 :(得分:1)

请确保使用与导出环境变量相同的终端。

答案 1 :(得分:0)

尝试像这样设置envoirment变量

process.env ['JWT_SECRET'] ='e177920e88165bd0090b1c6b544cf7';

或者喜欢这个:

var envs = require('envs');

// If NODE_ENV is not set, 
// then this application will assume it's prod by default.
app.set('environment', envs('NODE_ENV', 'production')); 

// Usage examples:
app.set('ga_account', envs('GA_UA'));
app.set('nr_browser_key', envs('NEW_RELIC_BROWSER_KEY'));
app.set('other', envs('SOME_OTHER_TOKEN));

答案 2 :(得分:0)

嗯,这对我来说很好。也许尝试添加console.log(process.env.JWT_SECRET)以检查您的env var是否正确加载。

作为旁注,我还会考虑使用某种环境变量管理库,例如dotenv。它允许您将所有环境变量存储在.env文件中,如:

JWT_SECRET="abc"
OTHER_ENV_VAR="def"

它可以更容易地跟踪您的环境变量:)

答案 3 :(得分:0)

哇,所以意识到我为我的终端打开了几个不同的窗口。我必须在我运行应用程序的窗口中设置变量,才能访问process.env.JWT_SECRET