跨文件拆分时,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});
我不确定这是 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});