为什么在使用多个子路由器时会得到404?

时间:2015-11-02 06:10:01

标签: javascript express routes

我一直在探索express.js 4.13+。看起来很不错。但是,当使用多个子路由器时,我只能到达第一个子路由器声明的端点。剩下的路由一直在抛出404.请求似乎没有沿着路由堆栈传播。

app.js

...
app.use(require('./controllers'));
app.use(require('./middlewares/404'));
...

控制器/ index.js

module.exports = router = new Router();

router.get('/', function(req, res) {
  res.render('home');
});

router.use('/empty', require('./empty')); // works
router.use('/member', require('./user')); // throws 404 works only if above mount is removed.

控制器/ empty.js

var Router = require('express').Router; 
module.exports = router = new Router();
router.get('/', function(req, res, next) {
  res.send('empty');
});

导航到//empty按预期工作,但/member下的所有路线都以404失败。感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

问题在于使用module.exports = router = new Router();模式。我的理解是前面的语句将router导出为在代码中的各个位置使用的全局变量。将此语句更改为var router = module.exports = new Router();就可以了。