2014-09-13 33 views
0

的Javascript新手在這裏路由示例代碼..獲取網頁無法使用的錯誤嘗試運行與節點

我已經嘗試運行routes文檔中給出的示例代碼時。

代碼:

var Router = require('routes'); 
var router = new Router(); 

router.addRoute('/admin/*?', auth); 
router.addRoute('/admin/users', adminUsers); 

http.createServer(function (req, res) { 
    var path = url.parse(req.url).pathname; 
    var match = router.match(path); 
    match.fn(req, res, match); 
}).listen(1337) 

// authenticate the user and pass them on to 
// the next route, or respond with 403. 
function auth(req, res, match) { 
    if (checkUser(req)) { 
    match = match.next(); 
    if (match) match.fn(req, res, match); 
    return; 
    } 
    res.statusCode = 403; 
    res.end() 
} 

// render the admin.users page 
function adminUsers(req, res, match) { 
    // send user list 
    res.statusCode = 200; 
    res.end(); 
} 

我可以通過node app.js運行這個和它啓動的罰款。然而,當我打http://localhost:1337/admin我得到以下錯誤:

TypeError: Cannot call method 'fn' of undefined 

爲了確保我沒有做錯事的服務器,我重新回範例節點應用:

http.createServer(function (req, res) { 
    .write("Hello world!"); 
    res.end(); 
}).listen(1337) 

這運行良好。我可以打localhost,看到它打印出你好世界。那麼當我運行routes示例代碼時,爲什麼會出現類型錯誤?

+0

嗯,也許是因爲'/ admin'不匹配'/ admin/*',因此不符合任何規則?你是否試過訪問'/ admin /'而不是'/ admin'? – Passerby 2014-09-13 06:17:13

+0

@Passerby是的。 '/ admin','/ admin /','/ admin/adsf'。所有結果都有相同的錯誤。 – user3308774 2014-09-13 06:25:33

回答

0

看看路徑格式的位置:https://www.npmjs.com/package/routes#path-formats

顯然,有使用router.addRoute('/admin/*?', auth);,我們不能期望獲得在localhost:1337/adminlocalhost:1337/admin/ 服務要做到這一點,只是刪除?

使用簡單router.addRoute('/admin/*', auth);,你很好去localhost:1337/admin/。雖然我仍然懷疑localhost:1337/admin將工作。正如文檔所述,我們需要使用router.addRoute('/admin', auth);

相關問題