[英]Express router : Router.use() requires a middleware function but got a Object
[英]Error On Express Router Setup: Router.use() requires middleware function but got a undefined
首先我要说的是,我知道在这个网站上以这个标题提出的几乎所有问题。
那里的解决方案非常明显并且已经由我完成(没有成功)或仅对那些特定情况有所帮助但不幸的是在我的情况下并没有真正起作用。
现在,对于这个问题:
我正在尝试创建一个路由来处理发送到路由“省略号”的获取请求和发布请求。 这些请求应该从 SQL 数据库接收和发送数据。
问题是由于某种原因,路由器还没有准备好获得这些功能,并给我标题中的错误:
Router.use() 需要中间件 function 但得到了一个 undefined
这是我的代码:
此代码来自文件dat.js 。 它的目的只是访问 SQL 数据库。
import { Sequelize } from "sequelize";
export const sequelize = new Sequelize('TheDataBaseName', 'TheUser', 'ThePassword', {
host: 'localhost',
dialect: 'mssql'
});
此代码来自文件: controller.js 。 它的目的是管理请求和加载数据。
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);
}
};
此代码位于文件中: routers.js 。 它的目的是定义路线
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);
此代码来自文件: app.js 。 这是一切实际发生的地方。
import { router } from "../routers";
import express from "express";
app.use('/api', router);
app.listen(5000, () => {
console.log("server is runing on port 5000")
});
您需要导出路由器
const router = Router();
router.route("/ellipses").get(sendEllipses).post(addNewEllipse)
export default router
现在导入路由器:
import routes from "../router.js";
app.use('/api', routes);
它也在文档中提到: https://expressjs.com/de/guide/routing.html#express-router
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.