본문 바로가기
  • 기록
Node.js

[Node.js] jwt에러 Error: Expected "payload" to be a plain object.

by juserh 2022. 4. 5.

jwt로 로그인 토큰 생성 중 아래와 같은 에러가 떴다.

Error: Expected "payload" to be a plain object.
userSchema.methods.generateToken = function(cb){
    var user = this;
    //jsonwebtoken을 이용해사 token 생성하기
    var token = jwt.sign(user._id, 'secretToken');

    //user._id+'secreatToken' = token : 'secretToken'->user._id
    user.token = token;
    user.save(function(err, user){
        if(err) return cb(err);
        cb(null, user);
    });
}

기존 토큰 생성 시 위와 같은 코드로 구현하였는데 

위 코드 중

var token = jwt.sign(user._id, 'secretToken');

이 부분을 수정해주어야 한다.

user._id를

user._id.toJSON() 혹은 user._id.toHexString()으로 수정해주면 에러 없어짐