/ / La ruta expresa se "omite" para la siguiente ruta: node.js, express

La ruta expresa se “omite” para la siguiente ruta: node.js, express

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

Cada 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.