我简单的Express 4应用程序让我心痛。下面是设置:
路由/ profile.js
var express = require('express');
var router = express.Router();
router.get('/profile', function(req, res) {
res.send('you are looking at a profile');
});
module.exports = router;
./ router.js
module.exports.routes = function(app) {
var index = require('./routes/index');
var profile = require('./routes/profile')
app.use('/', index);
app.use('/profile', profile);
};
和./app.js
...
var registerRoutes = require('./router');
...
registerRoutes(app);
现在,当我转到localhost:3000
并显示标准的Express内容时,此功能正常。
但是当我转到/profile
时,它会出现404错误。
但是,在profile.js中,如果我将router.get('/profile'...
更改为router.get('/'...
,则可以正常使用。
为什么呢?这样可以吗?我的直觉告诉我没有。
答案 0 :(得分:1)
路由模块中定义的路径与获取它们的路径相关。当您尝试访问/profile
端点时,express正在查找您创建的模块,然后在该模块中查找'/'
端点。它没有找到一个,因为你的处理程序被映射到'/profile'
,所以它继续在app.js链中,直到它到达你的404处理程序。
TL; DR:您所做的更改是有效的路由工作方式。将模块内的端点修复为'/'
,或尝试导航到/profile/profile
。