/ / Express Express sendo "ignorada" para a próxima rota - node.js, express

Rota expressa sendo "ignorada" para a próxima rota - node.js, express

A configuração do meu roteador é a seguinte:

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
}

Ao fazer uma solicitação para ambos /inviteParticipants/route1 e inviteParticipants/route2, /route2 parece pegar os dois pedidos.

No entanto, se eu comentar router.use("/route2",...) em invite.js, /route1 pegará a rota correspondente e a rota originalmente destinada à rota route2 simplesmente retornará um 404.

Assim, route1 funciona como pretendido, mas quando route2 está disponível, parece pegar o route1 pedido em vez disso. route1 não usa um next() ligue, se isso importa. Verifiquei novamente as rotas solicitadas e a rota que vai para route1 está correto.

O que eu poderia estar fazendo de errado aqui por estar "pulando" route1?

Respostas:

0 para resposta № 1

Toda vez que você escreve

var router = express.Router();

você está substituindo o roteador declarado anteriormente. Você está realmente exportando apenas o último roteador declarado no seu arquivo. Renomeie-o para

var routeOne = express.Router();

se você precisar exportar vários roteadores.