无法在中间件内访问 app.use() 的 req.params

can't access req.params of app.use() inside middleware

我正在尝试为我的应用程序构建动态路由。 app.js 中的代码片段如下所示:

app.use('/:c_name/api/',middleware);

中间件看起来像这样:

var router = require('express').Router();
router.get('/:m/:c/:a',(req, res, next) => {
console.log(req.params);
var controller = "./fe-ser/leg/fe/cli/"+req.params.c_name+"/main/process/"+req.params.module+"/controllers/"+req.params.controller;
});

现在解析中间件内部的路由,我需要 c_name 的值,但我无法使用 req.params.c_name 访问它。 req.params 仅包含 mca

因此,问题是,如何从我的中间件访问 c_name

您需要在初始化 router 时添加 mergeParams,这将保留 req.params

var router = express.Router({mergeParams: true});

希望对您有所帮助!