快速路线被“跳过”下一条路线

时间:2017-04-18 00:28:09

标签: node.js express

我的路由器设置如下:

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/route1inviteParticipants/route2发出请求时,/route2似乎抓住了这两个请求。

但是,如果我在invite.js中注释router.use('/route2',...)/route1将会捕获相应的路线,而原先用于路线route2的路线将只返回404。

因此,route1按预期工作,但当route2可用时,它似乎会捕获route1请求。如果重要的话,route1不会使用next()来电。我仔细检查了所请求的路线,并且前往route1的路线是正确的。

我在这里做错什么是“跳过”route1

1 个答案:

答案 0 :(得分:0)

每次写作

var router = express.Router();

您正在覆盖之前声明的路由器。您只是真正导出文件中最后声明的路由器。将它们重命名为

var routeOne = express.Router();

如果您需要导出多个路由器。