2016-04-30 67 views
1

所以基本上我想我的代码能够去mywebsite.com/username,并将它们带到他们的个人资料。如何仍然可以在节点快车中使用路由器,并仍然有通配符和参数?

我app.js有 -

var user = require('./routes/user'); 
app.use('/*', user); 

,然后在我的user.js的我有

router.get('/:username', function(req, res) { 
    console.log('the user name', req.params.username); 
}) 

如果我改变router.get只是router.get( '/')我console.log注销未定义,如果我把它留在router.get('/:username')我得到一个404 ..我也试着做app.use('/:用户名',用户),但仍然没有没有工作。

+1

如果你想访问像这样:mywebsite.com/username,那么只需使用app.use('/',router);没有必要使用'/ *' –

+0

他说什么,也不错,甚至不需要包括'/':) – kevingilbert100

+0

但是我做了app.use('/',index),因为那将是我的家页面而不是用户页面。 – joe

回答

0

您should't需要有一个通配符像你这样的app.use

尝试这样的事情。

另见快递路由器文档http://expressjs.com/en/guide/routing.html

// Required Moduiles 
var express = require('express'); 
var router = express.Router(); 
var app = express(); 


// Add route to get 
router.get('/:username', function(req, res) { 
    res.status(200).send(req.params.username) 
}) 

// Add username 
app.use('/', router) 


// Start express server 
app.listen(3030); 

更新 -

只需使用app.use(router)会做同样的事情,如果你所有的路线都将被包含在这个新的路由器实例/中间件你在一个单独的文件中创建。

+0

上述代码不起作用。它返回未定义的req.params.username – joe