如何将JWT密钥存储到环境变量并在其他文件中调用?
正确从.env加载JWT_SECRET到auth.js的方法
你的代码存在几个关键问题,以下是修正步骤和完整实现:
1. 确保依赖安装
首先确认已经安装所需的两个npm包:
npm install dotenv jsonwebtoken
2. 优化.env文件(可选但推荐)
去掉变量值的双引号,避免后续使用时携带多余的引号字符:
JWT_SECRET=secretsecret
3. 修正auth.js代码
// 加载.env环境变量 require('dotenv').config(); // 引入jsonwebtoken模块 const jwt = require('jsonwebtoken'); // 从process.env对象中读取JWT_SECRET const secret = process.env.JWT_SECRET; const expiration = '2h'; module.exports = { signToken: function({ username, email, _id }) { const payload = { username, email, _id }; return jwt.sign({ data: payload }, secret, { expiresIn: expiration }); } };
关键说明
- dotenv加载.env后,所有环境变量都会挂载到
process.env对象上,必须通过process.env.JWT_SECRET的方式访问,直接写JWT_SECRET会触发未定义错误 - 必须显式引入
jsonwebtoken模块,否则jwt.sign方法无法调用 - .env中的变量值不需要加引号,dotenv会自动解析纯文本值,加引号会导致变量值包含引号本身,可能引发JWT签名验证失败
内容的提问来源于stack exchange,提问作者damarts
相关产品推荐
相关产品推荐

