我一直在探索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失败。感谢任何帮助。
答案 0 :(得分:0)
问题在于使用module.exports = router = new Router();
模式。我的理解是前面的语句将router
导出为在代码中的各个位置使用的全局变量。将此语句更改为var router = module.exports = new Router();
就可以了。