Express 4 - 如何正确地为其他文件提供路由

时间:2014-11-13 20:44:41

标签: javascript node.js express

我简单的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('/'...,则可以正常使用。

为什么呢?这样可以吗?我的直觉告诉我没有。

1 个答案:

答案 0 :(得分:1)

路由模块中定义的路径与获取它们的路径相关。当您尝试访问/profile端点时,express正在查找您创建的模块,然后在该模块中查找'/'端点。它没有找到一个,因为你的处理程序被映射到'/profile',所以它继续在app.js链中,直到它到达你的404处理程序。

TL; DR:您所做的更改是有效的路由工作方式。将模块内的端点修复为'/',或尝试导航到/profile/profile