使用express.js进行路由 – 无法获取错误

第一次使用express.js ,而且我坚持添加我的第一条路线。

我的路线在app.js是这样定义的:

 app.get('/user/:id/photos', function(req,res){ res.send('user' + req.params.id); }); 

但是,curl到http://localhost:3000/user/1/photos只会导致“无法GET”错误。

Express中包含的索引文件似乎工作得很好。

这是我的快速app.js文件:

 var express = require('express'), routes = require('./routes'); var app = module.exports = express.createServer(); // Configuration app.configure(function() { app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.configure('development', function() { app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function() { app.use(express.errorHandler()); }); // Routes app.get('/', routes.index); app.get('/test', routes.test); app.get('/user/:id/photos', function(req, res) { res.send('user' + req.params.id); }); app.listen(3000); console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 

       

网上收集的解决方案 "使用express.js进行路由 – 无法获取错误"

尝试改变从最具体到最不具体的路线。 路线按顺序匹配。 如果它首先匹配'/'路由,它将传递给routes.index ,并且永远不会有机会路由到/user/:id/photos

所以,而不是:

 app.get('/', routes.index); .... app.get('/user/:id/photos', function(req,res){ 

尝试:

 app.get('/user/:id/photos', function(req,res){ .... app.get('/', routes.index); 

作为一个方面说明,我认为/user/photos/:id似乎更好,但我尝试了/something/:id/somethingelse在我的应用程序,它工作正常。

你的例子看起来很好。 它适用于我(expression式2.5.8,节点0.6.11)。 其实,虽然bryanmac是正确的顺序很重要, /user/1/photos的请求将不匹配的路线/ – 其他路线,例如/* ,但不是/ (或/test这个问题)。

你运行什么版本的快递节点? 另外,你可以发布你的routes.js吗?