我正在尝试在Express 4中解决router.route的问题,文档听起来很棒,但是对我来说不起作用.
I'm trying to get the hang of router.route in Express 4. The docs make it sound awesome, but it's just not working for me.
如果我使用命令行工具制作标准应用程序,然后添加如下所示的route/contacts.js:
If I use the command line tool to make a standard app and then add routes/contacts.js that looks like this:
var express = require('express'); var router = express.Router(); router.route('/:contactid') .get(function(req, res) { res.send('(get) It worked '+contactid); }) module.exports = router;然后在app.js中添加:
Then in app.js add:
var contacts = require('./routes/contacts'); ... app.use('/contacts', contacts);我希望localhost:8000/contacts/1匹配来自contacts.js的路由.但是,我得到一个错误,该错误实质上表明它与contacts.js中的任何路由都不匹配
I'd expect localhost:8000/contacts/1 to match the route from contacts.js. However, I get an error that essentially indicates it's not matching any routes in contacts.js
Error: Not Found at Layer.app.use.res.render.message [as handle] (project1/app.js:31:15) at trim_prefix (project1/node_modules/express/lib/router/index.js:226:17) at c (project1/node_modules/express/lib/router/index.js:198:9) at Function.proto.process_params (project1/node_modules/express/lib/router/index.js:251:12) at next (project1/node_modules/express/lib/router/index.js:189:19) at next (project1/node_modules/express/lib/router/index.js:150:14) at next (project1/node_modules/express/lib/router/index.js:166:38) at Function.proto.handle (project1/node_modules/express/lib/router/index.js:234:5) at Layer.router (project1/node_modules/express/lib/router/index.js:23:12) at trim_prefix (project1/node_modules/express/lib/router/index.js:226:17)如果我使用静态前缀添加路由,则可以按预期工作:
If I add routes using a static prefix, it works as expected:
router.get('/1', function(req, res) { res.send('It worked!'); }); // localhost:8000/contacts/1 says "It worked!"关于我在做什么错的任何提示吗?
Any tips on what I'm doing wrong?
推荐答案路由器路径是相对于已安装路径的.因此,您的通讯录路由器将改为:
Router paths are relative to the mounted path. So your contacts router would instead just be:
router.route('/:contactid') .get(function(req, res) { res.send('(get) It worked ' + req.params.contactid); })更多推荐
Express.js 4路由与router.route不匹配
发布评论