首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误: secretOrPrivateKey必须有一个值

错误: secretOrPrivateKey必须有一个值
EN

Stack Overflow用户
提问于 2019-11-03 01:19:24
回答 11查看 41.6K关注 0票数 23

我正在使用jwt创建令牌,但是当我通过邮递员登录时,我从我的控制台收到错误消息" error : secretOrPrivateKey must have a value“。我已经附上了我的登录码。请任何能帮助我的人

代码语言:javascript
运行
复制
exports.login = (req, res, next) => {
  User.findOne({
    where: {
      email: req.body.email
    }
  })
    .then(user => {
      if (!user) {
        return res.status(401).json({
          message:
            "Auth failed!! either the account does't exist or you entered a wrong account"
        });
      }
      bcrypt.compare(req.body.password, user.password, (err, result) => {
        if (err) {
          return res.status(401).json({
            message: "Auth failed",
            token: token
          });
        }
        if (result) {
          const token = jwt.sign(
            {
              email: user.email,
              password: user.id
            },
            process.env.JWT_KEY,
            {
              expiresIn: "1h"
            }
          );

          res.status(200).json({
            message: "Auth granted, welcome!",
            token: token
          });
        }
      });
    })
    .catch(err => {
      console.log(err);
      res.status(500).json({
        error: err
      });
    });
};

这是我的env.json文件

代码语言:javascript
运行
复制
{
    "env":{
        "MYSQL":"jllgshllWEUJHGHYJkjsfjds90",
        "JWT_KEY": "secret"
    }
}

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2019-11-03 03:30:09

看起来您的应用程序无法正确读取环境变量。

我不知道您使用哪个包来加载环境变量,但最简单的方法是使用dotenv包。

在使用npm i dotenv安装之后,尽可能早地将其导入您的应用程序主文件中,如下所示:

代码语言:javascript
运行
复制
require("dotenv").config();

使用此内容(如您所见,格式为key=value)在应用程序根文件夹中创建.env文件

代码语言:javascript
运行
复制
MYSQL=jllgshllWEUJHGHYJkjsfjds90
JWT_KEY=secret

然后,您可以像以前一样访问它们的值:

代码语言:javascript
运行
复制
process.env.JWT_KEY

.env文件:

票数 35
EN

Stack Overflow用户

发布于 2020-08-31 19:04:37

删除process.env.JWT_秘密_键,然后这样做:${process.env.JWT_SECRET_KEY}

用反引号把它括起来。它为我解决了这个问题。

票数 18
EN

Stack Overflow用户

发布于 2020-06-13 03:02:33

只有当我将其与如下所示的空字符串连接在一起时,它才能对我起作用:

代码语言:javascript
运行
复制
"" + process.env.JWT_KEY
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58673430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档