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 № 1Toda 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.