En primer lugar, solo diré que conozco casi todas las preguntas que se hacen en este sitio bajo este título.
Las soluciones allí eran bastante obvias y ya las había hecho yo (sin éxito) o solo ayudaron para esos casos específicos y desafortunadamente no funcionaron en mi caso.
Ahora, para el problema:
Estoy tratando de crear una ruta que manejará una solicitud de obtención y una solicitud de publicación que se envían a la ruta 'puntos suspensivos'. Estas solicitudes deben recibir y enviar datos desde y hacia una base de datos SQL.
El problema es que por alguna razon el router no esta listo para sacar estas funciones y me da el error en el titulo:
Router.use () requiere una función de middleware pero tiene un valor indefinido
Aquí está mi código:
Este código es del archivo dat.js. su propósito es simplemente acceder a la base de datos SQL.
import { Sequelize } from "sequelize"; export const sequelize = new Sequelize('TheDataBaseName', 'TheUser', 'ThePassword', { host: 'localhost', dialect: 'mssql' });Este código es del archivo: controller.js . su finalidad es gestionar las peticiones y cargar los datos.
import { sequelize } from "../dat"; export const sendEllipses = async (req, res, next) => { try { const ellipses = await getEllipsesFromJson(); return res.send(ellipses); } catch (e) { console.log(e); } }; export const addNewEllipse = async (req, res, next) => { const { body: obj } = req; let newEllipse; try { if (Object.keys(obj) !== null) { logger.info(obj); newEllipse = await sequelize.query( `INSERT INTO [armageddon].[dbo].[ellipses] (${Object.keys( obj ).toString()}) values (${Object.values(obj).toString()})` ); } else { console.log("the values are null or are empty"); } return res.send(newEllipse); } catch (error) { console.log(error); } };Este código está en el archivo: routers.js . su propósito es definir la ruta
import Router from "express"; import { sendEllipses } from "../ellipses.controller"; import { addNewEllipse } from "../ellipses.controller"; const router = Router(); export default router.route("/ellipses").get(sendEllipses).post(addNewEllipse);Este código es del archivo: app.js. Aquí es donde todo sucede realmente.
import { router } from "../routers"; import express from "express"; app.use('/api', router); app.listen(5000, () => { console.log("server is runing on port 5000") });Necesitas exportar el enrutador
const router = Router(); router.route("/ellipses").get(sendEllipses).post(addNewEllipse) export default routerAhora importe el enrutador:
import routes from "../router.js"; app.use('/api', routes);También se menciona en los documentos: https://expressjs.com/de/guide/routing.html#express-router