Express Router在路由器中使用未定义的参数

我不确定这是否是Express中的一个错误,或者如果我只是做了错误(可能是后者),但是我发现req.params只是在请求的最后一步保留参数。 为了certificate我的意思:

工作示例:

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生成器以上述方式定义了路由 – 而且它仍然必须在某个path中定义。 当然,我仍然可以访问“身份证”?

所以基本上,我错过了什么? 这是故意的/是否有logging? FWIW我正在使用Express v4.12.0。

免责声明:文件的东西可能是不相关的,但更好的是安全而不是遗憾。

当你在File 2创build你的Router时,你需要告诉它inheritance父母的参数。

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

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