首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决此错误: Route.get()需要回调函数,但获得了[object Undefined]

如何解决此错误: Route.get()需要回调函数,但获得了[object Undefined]
EN

Stack Overflow用户
提问于 2020-06-18 02:23:24
回答 1查看 135关注 0票数 1

我定义了这个函数:

代码语言:javascript
运行
复制
// /middleware/authMiddleware.js 
'use strict'

const jwt = require('jwt-simple');
const moment = require('moment');
require('dotenv').config();


function isAuth(req,res, next) {
    if(!req.headers.authorization) {
        return res.status(403).send({mesagge: 'No tienes autorización'})
    }

    const token = req.headers.authorization.split(" ")[1];
    const payload = jwt.decode(token, process.env.JWT_SECRET_TOKEN);

    if(payload.exp <= moment().unix()) {
        return res.status(401).send({message: 'El token ha expirado'})
    }

    req.user = payload.sub;
    next();
}

module.exports = isAuth

当我从/route/index.js调用它时

代码语言:javascript
运行
复制
'use strict'

const express = require('express');
const router = express.Router();
const authMiddleware  = require ('../middleware/authMiddleware');

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
});

router.get('/exito', authMiddleware.isAuth,  (req, res) => {
    return res.status(200).send({token: req.user})
});

module.exports = router;

我得到了错误

代码语言:javascript
运行
复制
Route.get() requires a callback function but got a [object Undefined]

但我不明白错误在哪里,我在这里读到了一些类似的问题,但我不知道问题在哪里。

谢谢。

奥斯卡

EN

回答 1

Stack Overflow用户

发布于 2020-06-18 02:59:35

您将在authMiddleware模块中直接导出函数isAuth,这就是为什么在您的index.js模块中,authMiddleware引用函数本身,而isAuth显然不存在于函数中。

要解决此问题,请将您的路由器更改为以下设置:

代码语言:javascript
运行
复制
router.get('/exito', authMiddleware,  (req, res) => {
    return res.status(200).send({token: req.user})
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62435862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档