Node.js TypeError:JwtStrategy需要一个函数从请求中检索jwt(请参阅选项jwtFromRequest)

Node.js TypeError:JwtStrategy需要一个函数从请求中检索jwt(请参阅选项jwtFromRequest),node.js,authentication,jwt,passport.js,passport-jwt,Node.js,Authentication,Jwt,Passport.js,Passport Jwt,我已经尝试了一切,我遵循了StackOverflow中的所有链接,但问题没有解决。我已经更改了passport jwt的版本。请注意。先谢谢你。这是密码。我经历过的所有事情都是错误的,但那也是错误的 /home/hadi/Desktop/letuscode/node_modules/passport-jwt/lib/strategy.js:55 throw new TypeError('JwtStrategy requires a function to retrieve jwt

我已经尝试了一切,我遵循了StackOverflow中的所有链接,但问题没有解决。我已经更改了passport jwt的版本。请注意。先谢谢你。这是密码。我经历过的所有事情都是错误的,但那也是错误的

/home/hadi/Desktop/letuscode/node_modules/passport-jwt/lib/strategy.js:55
        throw new TypeError('JwtStrategy requires a function to retrieve jwt from requests (see option jwtFromRequest)');
        ^

TypeError: JwtStrategy requires a function to retrieve jwt from requests (see option jwtFromRequest)
    at new JwtStrategy (/home/hadi/Desktop/letuscode/node_modules/passport-jwt/lib/strategy.js:55:15)
    at module.exports (/home/hadi/Desktop/letuscode/config/passport.js:13:18)
    at Object.<anonymous> (/home/hadi/Desktop/letuscode/app.js:29:29)
    at Module._compile (internal/modules/cjs/loader.js:1133:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47


尝试在passport.js文件中使用ExtractJwt.fromAuthHeaderWithScheme('JWT')而不是'JWT'。这是因为在passport.js文件中尝试使用ExtractJwt.fromAuthHeaderWithScheme('JWT')而不是'JWT'。这是从
passport.js

const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const mongoose = require('mongoose');
const User = mongoose.model('users');
const keys = require('../config/keys');

const opts = {};

opts.jwtFromrequest = ExtractJwt.fromAuthHeaderWithScheme('jwt')
opts.secretOrKey = keys.secretkey

module.exports = passport => {
    passport.use(new JwtStrategy(opts,function(jwt_payload,done){
            User.findById(jwt_payload.id)
                .then(user=>{
                    if(user){
                        return done(null,user)
                    }
                    return done(null,false)
                })
                .catch(err=>console.log(err))
        }))
}
app.js

const express = require('express');
const app = express();
const mongoose = require('mongoose');
const port =process.env.port;
const users = require('./routes/api/users');
const bodyparser = require('body-parser');
const passport = require('passport');

//DB config
const db = require('./config/keys').mongourl;

//connect to mongodb
mongoose
    .connect(db,{useNewUrlParser:true,useUnifiedTopology:true})
    .then(()=>console.log('mongodb conected'))
    .catch( err => console.group(err))

//bodyparser middleware
app.use(bodyparser.urlencoded({extended:false}))
app.use(bodyparser.json());

//use routes
app.use('/api/users',users);

//passport middleware
app.use(passport.initialize());

//passport Config
require('./config/passport')(passport);


app.listen(port,()=>console.log(`server running on ${port}`));
routes.js

const express = require('express');
const router = express.Router();
const User = require('../../models/user');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const keys = require('../../config/keys');
const passport = require('passport');

//@route    GET /api/users/current
//@desc     return current user from token
//@access   private
router.get('/current',passport.authenticate('jwt',{session : false}),(req,res)=>{
    res.json({msg:'Success'});
})