我的路由器设置如下:
app.js
global.express = require('express');
var app = express();
app.use(require('./server/routes/index'));
index.js
var router = express.Router();
router.use('/', require('./home.js'));
router.use('/inviteParticipants', require('./invite.js'));
module.exports = router;
invite.js
var router = express.Router();
router.use('/route1', require('./route1.js'));
router.use('/route2', require('./route2.js'));
module.exports = router;
route1.js
var router = express.Router();
router.post('/:key', function(req, res, next) {
// ..code
}
module.exports = router;
route2.js
var router = express.Router();
router.post('/:key', function(req, res, next) {
// ..code
}
module.exports = router;
home.js
router.get('/', function(req, res, next) {
// code
}
向/inviteParticipants/route1
和inviteParticipants/route2
发出请求时,/route2
似乎抓住了这两个请求。
但是,如果我在invite.js中注释router.use('/route2',...)
,/route1
将会捕获相应的路线,而原先用于路线route2
的路线将只返回404。
因此,route1
按预期工作,但当route2
可用时,它似乎会捕获route1
请求。如果重要的话,route1
不会使用next()
来电。我仔细检查了所请求的路线,并且前往route1
的路线是正确的。
我在这里做错什么是“跳过”route1
?
答案 0 :(得分:0)
每次写作
var router = express.Router();
您正在覆盖之前声明的路由器。您只是真正导出文件中最后声明的路由器。将它们重命名为
var routeOne = express.Router();
如果您需要导出多个路由器。