我在express.js中声明了这些路由器,我想知道为什么当我打开localhost:3000 / myname / profile时run user
被触发了。
router.get('/:username', function(req, res, next)
{
console.log('run user')
});
router.get('/:username/profile', function(req, res, next)
{
console.log('run user profile')
});
我希望它不会,如何解决? 请有人帮帮我吗? 提前谢谢....
答案 0 :(得分:1)
只需重新排列代码,如下所示,您的代码应该可以正常工作。
router.get('/:username/profile', function(req, res, next)
{
console.log('run user profile')
});
router.get('/:username', function(req, res, next)
{
console.log('run user')
});
问题在于定义路由的顺序,因为当您点击/:username
时,两条路线都有http://localhost:3000/myname/profile.
,因此第一条路线与uri相匹配,因此会优先选择路线。
另请参阅此stackoverflow帖子关于快速路线命名和订购 - Node.js Express route naming and ordering: how is precedence determined?
答案 1 :(得分:0)
你确定吗?我尝试了您的代码并触发了run user profile
。您可以显示所有代码。