【问题标题】:express router middleware: reference error "req is not defined"快速路由器中间件:参考错误“未定义请求”
【发布时间】:2015-09-22 17:43:33
【问题描述】:

我正在使用一个对令牌进行身份验证的中间件,但问题不是 sn-p,当我实例化函数时问题会出现。

这是我的代码:

router.use(authRequirer(req, res, next));

好的,这里是路由文件:

let router = express.Router();

// Middleware
import authRequirer from '../util/authRequirer';

// Controllers
import AuthCtrl from '../controllers/authCtrl';
import UserCtrl from '../controllers/userCtrl';

let authCtrl = new AuthCtrl();
let userCtrl = new UserCtrl();

router.get('/', (req, res) => {
  res.json({ message: "Hey, im working" });
});

// Login, Register, setup admin
router.get('/setup'    , authCtrl.setup);
router.post('/register', authCtrl.register);
router.post('/login'   , authCtrl.login);

// Autenticacion requerida
router.use(authRequirer(req, res, next));

router.route('/users')
  .get(userCtrl.getAll)
  .post(userCtrl.create);

router.route('/users/:username')
  .get(userCtrl.getOne)
  .put(userCtrl.edit)
  .delete(userCtrl.delete);

export default router;

我认为我没有做任何不正常的事情,但是当我运行代码时,它会抛出以下跟踪:

/home/nano/Dev/omgfriki-api/app/routes/apiroutes.js:44
router.use((0, _utilAuthRequirer2['default'])(req, res, next));
                                              ^
ReferenceError: req is not defined

为什么没有定义 req?据我了解,它是在您调用路由器时定义的。

无论如何,我使用 Babel 和一个 require 钩子来编译这些东西,但 90% 认为这不是问题。

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    而不是使用 reqresnext 等尚不存在的变量调用 authRequirer 函数:

    router.use(authRequirer(req, res, next));

    你应该只传递函数:

    router.use(authRequirer);

    因为use 方法将通过reqresnext 参数调用您的authRequirer 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多