Express路由中req.params输出undefined的原因咨询
问题原因及修复方案
核心问题:路由回调参数顺序颠倒
Express 路由回调函数的参数顺序是固定的:第一个参数是请求对象req,第二个是响应对象res,你写反了参数顺序,导致代码里的req实际是响应对象res,而res才是请求对象,自然req.params会返回undefined。
另外代码还有一个问题:第一行就执行了return console.log(req.params),这会直接终止函数执行,后面的逻辑永远不会运行,也需要一并修正。
修正后的代码
router.get('/invite/:invitecode', async(req, res) => { console.log(req.params) // 现在能正确输出 { invitecode: 'fs' } if(!req.params.invitecode) { return res.render('404') } if(!req.user) { res.redirect(`/login?state=invite/${req.params.invitecode}`) } else { res.render('join') } })
验证说明
修正参数顺序并移除提前return的代码后,访问http://localhost:3000/invite/fs,控制台会正确输出{ invitecode: 'fs' },后续的业务逻辑也能正常执行。
内容的提问来源于stack exchange,提问作者Bob joe12
相关产品推荐
相关产品推荐

