跨文件拆分时,Express Router 未定义参数为 router.use

Express Router undefined params with router.use when split across files

我不确定这是 Express 中的错误,还是我只是做错了什么(可能是后者),但我发现 req.params 只是在请求的最后一步。为了证明我的意思:

工作示例:

router.get('/:id/test', function(req, res){
    // req.params.id is not undefined
});

不起作用:(

文件 1:

router.use('/:id', require('./file2'));

文件 2:

router.get('/test', function(req, res){
    // req.params.id is undefined?!
});

现在...以上对我来说似乎完全不合逻辑,因为 Express 生成器以上述方式定义路由 - 而且它仍然必须在路径中的某处定义。当然我应该仍然能够访问 "id"?

基本上,我是不是漏掉了什么?这个 deliberate/is 有记录吗? FWIW 我正在使用 Express v4.12.0.

免责声明:文件的事情可能无关紧要,但安全总比抱歉好。

当您在 File 2 中创建 Router 时,您需要告诉它从父级继承参数。

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

http://expressjs.com/api.html#router