控制台说未定义下一步

时间:2018-11-07 13:06:57

标签: node.js express middleware

我正在一个项目上,正在尝试使用中间件验证我的jwt令牌,但在控制台中收到一条错误消息,提示“未定义下一个”, 这是我的代码

在login.js中

const verifyy = require('./verifyJWT')

module.exports = (req, res)=> {
    verifyy(req, res, next)
}

在中间件所在的verifyJWT.js中,代码如下

const jwt = require('jsonwebtoken')
const fs = require('fs');

var public = fs.readFileSync('./public.pem');

module.exports = (req, res, next)=> {
    var token = req.headers.authorization.split(' ')[1]
    if (!token) return res.status(401).send({ auth: false, message: 'No token provided.' });
    jwt.verify(token, public, function(err, decoded) {
        if (err) return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' });
        next();

    });
}

请问如何解决这个问题或我做错了什么

1 个答案:

答案 0 :(得分:0)

我认为问题出在login.js中,您正在导出一个箭头函数,而该箭头函数未在arrow函数中接收下一个参数,并且您将next传递给了verify,因此next是不确定的。

const verifyy = require('./verifyJWT')

module.exports = (req, res)=> {
    verifyy(req, res, next)
}

您可以尝试在登录名中传递下一个。

const verifyy = require('./verifyJWT')

module.exports = (req, res, next)=> {
    verifyy(req, res, next)
}