快速路由器中间件:引用错误“req未定义”

时间:2015-07-05 14:16:03

标签: node.js express

我正在使用一个验证令牌的中间件,但是probolem不是片段,当我实例化该函数时问题就出现了。

有我的代码:

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?据我所知,它是在你调用路由器时定义的。

无论如何,我正在使用带有require钩子的Babel来编译东西,但90%认为这不是问题。

1 个答案:

答案 0 :(得分:4)

而不是使用authRequirerreqres等尚不存在的变量来调用next函数:

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

您应该只传递函数:

router.use(authRequirer);

因为use方法是要通过authRequirerreqres参数调用next函数的方法。< / p>