使用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);
尝试改变从最具体到最不具体的路线。 路线按顺序匹配。 如果它首先匹配'/'
路由,它将传递给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吗?