首页 > 解决方案 > 如何将参数传递给中间件的构造函数?

问题描述

假设我想这样做:

app.use('/user/login', require('./routes/user.route.js')(variable));

我不能,因为我会得到:

TypeError:Router.use() 需要一个中间件函数,但有一个未定义的

如何传递variableuser.route构造函数?

标签: node.jsexpress

解决方案


在您的user.route.js中,您需要导出如下内容:

module.exports = function (variable) {
    return (req, res, next) => {
        // your middleware
        next()
    }
}

或者使用currying(https://wsvincent.com/javascript-currying/):

module.exports = variable => (req, res, next) => {
   const myUsedVariable = variable + 1
   res.send(myUsedVariable)
}

如果您使用的是 express.Router:

var express = require('express')
var router = express.Router()

router.get('/', function(req, res) {
  res.send('Birds home page')
})

module.exports = variable => {
   // do something with your variable
   router.use(function displayVariable(req, res, next) {
      console.log(variable)
      next()
   })

   return router
}

推荐阅读