La configuración de mi enrutador es la siguiente:
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
}
Al hacer una solicitud a ambos /inviteParticipants/route1
y inviteParticipants/route2
, /route2
Parece captar ambas peticiones.
Sin embargo, si comento router.use("/route2",...)
en invite.js, /route1
capturará la ruta correspondiente, y la ruta originalmente prevista para la ruta route2
simplemente devolverá un 404.
Asi que, route1
Funciona según lo previsto, pero cuando route2
está disponible, parece atrapar la route1
solicitud en su lugar. route1
no usa un next()
Llama, si eso importa. He verificado dos veces las rutas solicitadas y la ruta que va a route1
es correcto.
¿Qué podría estar haciendo mal aquí para estar "saltando" route1
?
Respuestas
0 para la respuesta № 1Cada vez que escribas
var router = express.Router();
Usted está sobrescribiendo el enrutador previamente declarado. Solo está exportando realmente el último enrutador declarado en su archivo. Cámbiele el nombre a
var routeOne = express.Router();
Si necesita exportar múltiples enrutadores.