2016-04-30 66 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