我正在使用需要秘密字符串的库。我已经设置了我的节点变量:
export JWT_SECRET=e177920e88165bd0090b1c6b544cf7
但是,当我尝试在我的应用中使用它时,就像这样:
const jwt = require('jsonwebtoken');
function userToken(user) {
return jwt.sign({
user: user.id,
}, process.env.JWT_SECRET);
}
它会发出一个错误,指出秘密必须是字符串或缓冲区。我认为节点变量是字符串,所以不确定问题是什么。谢谢。
答案 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
。