我一直在探索express.js 4.13+。看起来相当不错。但是,当使用多个子路由器时,我只能到达第一个子路由器声明的端点。剩余的路由不断抛出 404。请求似乎没有沿着路由堆栈传播。
app.js
...
app.use(require('./controllers'));
app.use(require('./middlewares/404'));
...
Controller /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.
Controller /empty.js
var Router = require('express').Router;
module.exports = router = new Router();
router.get('/', function(req, res, next) {
res.send('empty');
});
导航到 /
和 /empty
按预期工作,但 /member
下的所有路由均失败并显示 404。感谢任何帮助。
最佳答案
问题在于使用 module.exports = router = new Router();
模式。我的理解是,前面的语句将 router
导出为全局变量,在代码中的各个位置使用。将此语句更改为 var router = module.exports = new Router();
就成功了。
关于javascript - 为什么使用多个子路由器时会出现 404?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33471681/