Error de carga útil en jsonwebtoken

Estoy haciendo una aplicación web usando nodejs y angular cli Estoy usando JWT para autenticar mi función de inicio de sesión. Pero cuando lo procesé arrojó este error

Error: se esperaba que la "carga útil" fuera un objeto simple. en validate (D: \ Mean_Projects \ meanauthapp \ node_modules \ jsonwebtoken \ sign.js: 34: 11) en validatePayload (D: \ Mean_Projects \ meanauthapp \ node_modules \ jsonwebtoken \ sign.js: 56: 10) en Object.module.exports [como signo] (D: \ Mean_Projects \ meanauthapp \ node_modules \ jsonwebtoken \ sign.js: 108: 7) en User.comparePassword (D: \ Mean_Projects \ meanauthapp \ routes \ users.js: 86: 27) en bcrypt.compare (D: \ Mean_Projects \ meanauthapp \ models \ user.js: 53: 9) en D: \ Mean_Projects \ meanauthapp \ node_modules \ bcryptjs \ dist \ bcrypt.js: 297: 21 en D: \ Mean_Projects \ meanauthapp \ node_modules \ bcryptjj \ dist \ bcrypt.js: 1353: 21 en Immediate.next [como _onImmediate] (D: \ Mean_Projects \ meanauthapp \ node_modules \ bcryptjs \ dist \ bcrypt.js: 1233: 21) en runCallback (timers.js: 785: 20 ) en tryOnImmediate (timers.js: 747: 5) en processImmediate [como _immediateCallback] (timers.js: 718: 5)

Aquí mi código de pasaporte

    const JwtStrategy= require('passport-jwt').Strategy;
    const ExtractJwt=require('passport-jwt').ExtractJwt;
    const User= require('../models/user');
    const config=require('../config/database');        
    module.exports=function(passport){
    let opts={};
    opts.jwtFromRequest=ExtractJwt.fromAuthHeader();
    opts.secretOrKey=config.secret;
    opts.issuer = 'accounts.examplesoft.com';
    opts.audience = 'yoursite.net';
    passport.use(new JwtStrategy(opts,(jwt_payload,done)=>{
        console.log(jwt_payload);
        User.getUserById(jwt_payload._doc._id,(err,user)=>{
            if(err){
                return done(err,false);
            }
            if(user){
                return done(null,user);
            }
            else{
                return done(null,false);
            }
        });
    }));
}

Mi código para autenticar y obtener perfil

// Authenticate
router.post('/authenticate', (req, res, next) => {
  const username = req.body.username;
  const password = req.body.password;

  User.getUserByUsername(username, (err, user) => {
    if(err) throw err;
    if(!user){
      return res.json({success: false, msg: 'User not found'});
    }

    User.comparePassword(password, user.password, (err, isMatch) => {
      if(err) throw err;
      if(isMatch){
        const token = jwt.sign(user, config.secret, {
          expiresIn: 604800 // 1 week
        });

        res.json({
          success: true,
          token: 'JWT '+token,
          user: {
            id: user._id,
            name: user.name,
            username: user.username,
            email: user.email
          }
        });
      } else {
        return res.json({success: false, msg: 'Wrong password'});
      }
    });
  });
});

// Profile
router.get('/profile', passport.authenticate('jwt', {session:false}), (req, res, next) => {
  res.json({user: req.user});
});

Respuestas a la pregunta(4)

Su respuesta a la pregunta