Javascript express.js中基于参数的路由器

Javascript express.js中基于参数的路由器,javascript,node.js,express,Javascript,Node.js,Express,我在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 prof

我在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')
});
我想不会,怎么解决呢? 谁能帮帮我?
提前谢谢你……

你确定吗?我尝试了您的代码,它触发了
运行用户配置文件
。请您显示所有代码。

只需按如下所示重新排列代码,您的代码就会正常工作

router.get('/:username/profile', function(req, res, next)
{
   console.log('run user profile')
});

router.get('/:username', function(req, res, next)
{
    console.log('run user')
});
问题在于路由的定义顺序,因为当您点击
http://localhost:3000/myname/profile.
,第一个路由将优先考虑,因为它与uri匹配

另请参阅本篇有关快速路线命名和订购的文章-

我无法重现这个问题。请发送其余的代码。真的发生了吗?