aplicación.js
const express = require("express"); const app = express(); app.use("/", require("./routers.js")(app)); app.listen(3000);enrutador.js
module.exports = function (app) { console.log(app); app.get("/", (req, res) => { res.json(5); }); };El error dado por la Consola es: "TypeError: Router.use() requiere una función de middleware pero obtuvo un indefinido"
No entiendo por qué no puedo pasar la aplicación express (app.js) a través de los enrutadores (de esta manera no vuelvo a declarar la variable express y app en router.js).
No pases app a rutas mejor crea un nuevo router y pasa a la app.
enrutador.js
const express = require("express"); const router = express.Router(); router.get("/", (req, res) => { res.json(5); }); module.exports = router;aplicación.js
app.use("/", require("./routers.js"));Como menciona en el comentario, no tiene que agregar una aplicación interna.
module.exports = function (app) { app.get("/", (req, res) => { res.json(5); }); }; // app.js require("./routers.js")(app);El método de uso de Express necesita una devolución de llamada de tres parámetros, no la aplicación en sí, por lo que necesita algo como esto:
En rutas.js
exports.doSomeThing = function(req, res, next){ console.log("Called endpoint"); res.send("Called endpoint"); }En tu index.js
const Express = require("express"); const app = Express(); const routes = require("./routes"); app.use("/", routes.doSomeThing); app.listen(3030, () => { console.log("Listening on port 3030"); });Este enfoque no necesita incluir el enrutador expreso, pero esto puede no ser adecuado para proyectos a gran escala. Le recomiendo que lea la documentación del enrutador expreso: