Javascript 未处理的拒绝类型错误“;将循环结构转换为json“;生成json web令牌时

Javascript 未处理的拒绝类型错误“;将循环结构转换为json“;生成json web令牌时,javascript,json,jwt,Javascript,Json,Jwt,我正在一个应用程序上实现json web令牌身份验证,我得到的错误是: “未处理的拒绝类型错误:将循环结构转换为JSON” 我进一步发现,当执行到达我的webtoken生成时会发生此错误,因为在我将其注释掉时没有发生此错误 请在下面找到我的代码: const express= require("express"); const router= express.Router(); let Users = require("../models/users"); con

我正在一个应用程序上实现json web令牌身份验证,我得到的错误是:

“未处理的拒绝类型错误:将循环结构转换为JSON”

我进一步发现,当执行到达我的webtoken生成时会发生此错误,因为在我将其注释掉时没有发生此错误

请在下面找到我的代码:

    const express= require("express");
    const router= express.Router();
    let Users = require("../models/users");
    const jwt= require("jsonwebtoken");
    const configuration = require("../config");
    const app = express();
    app.set("superSecret", configuration.secret);

    //registered user submitting signin form
    router.post("/users/signin", function(req, res, next){
      let confirm;
      Users.findOne({
        where:{ username: req.body.username}
      }).then(user => {
        if(!user){
          res.send("No such users found!")
        }
        else if(user){
           confirmed = user.password === req.body.password;
          if(confirmed){
            let token = jwt.sign(user, app.get("superSecret"), 
                {expiresIn: 1440}); 
                    //expiresInMinutes
                res.json({
                            success: true,
                            message: "enjoy your json",
                            token: token
                          })
          }
          else{
            res.send('incorrect password');
          }
        }
      })
    });
如果我注释掉let token=jwt.sign(user,app.get(“superSecret”)…就不会有错误。 谢谢你的期待

下面是我的用户模型

    const Sequelize= require('sequelize')
    const bcrypt = require('bcrypt-nodejs')
    const sequelStorage = new Sequelize('newtrial', 'olatunji', '5432', {
      host: 'localhost',
      dialect: 'postgres',

        pool: {
        max: 5,
        min: 0,
        idle: 10000
      },

    });


    let Users = sequelStorage.define('users', {
      username:{
        type: Sequelize.STRING,
        allowNull: false
      },
      email: {
        type: Sequelize.STRING,
        allowNull: false,
        unique: true,
        validate: { isEmail: true}
      },
      password:{
        type: Sequelize.STRING,
        allowNull:false
      },
      admin:{
        type: Sequelize.BOOLEAN,
        allowNull: false,
        default: false
      }
    })

    sequelStorage.sync()
   [enter image description here][1] .catch(function(error){
      console.log(error);
    });

    module.exports= Users;

它似乎无法对有效负载进行字符串化(
user
object)

不管怎样,这可能是因为sequelize实体包装器,请尝试这样调用它

let token=jwt.sign(user.toJSON(),app.get(“superSecret”),{expiresIn:1440});


您可以查看这个问题,了解从sequelize模型获取普通对象的更多方法:

您可以共享错误堆栈跟踪吗?我在问题顶部添加了一个错误截图链接,很高兴它起作用。如果问题解决了,请接受答案。