【发布时间】:2021-12-05 22:40:54
【问题描述】:
我正在使用 TypeScript 和 Express 创建一个遵循清洁架构原则的 API。我将应用程序的每条路由分开到一个文件夹中,然后将它们全部导入到index.ts 文件中,将每个路由合并到一个唯一的路由器中并导出相同的路由。我的问题是这个唯一文件的导入返回undefined。
我认为这不是我的代码本身的问题,因为 TypeScript 可以正确推断导入文件的类型,并且在开发过程中不会报告任何错误。我遇到的唯一错误是在尝试运行代码时发生的:
TypeError:
app.use()需要中间件函数
这是导致错误的代码sn-p:
// expressInstance.ts --> Imported by the "server.ts" file, where listening the server happens
import express from "express";
import cors from "cors";
import { router } from ".."; // File with all the routes
const expressInstance = express();
expressInstance.use(express.urlencoded({extended: false}));
expressInstance.use(express.json());
expressInstance.use(cors());
expressInstance.use(router); // Line where the error appears
export {
expressInstance
};
这是导入的router文件的代码:
// index.ts
import { Router } from "express";
import { userRouter } from "./user.routes";
import { postRouter } from "./post.routes";
const router = Router();
router.use("/user", userRouter);
router.use("/post", postRouter);
export {
router
};
我读到in another question undefined 返回曾经发生在 Express 版本 3 中,但我使用的是 4.17.13 版本,所以我认为这不是问题的原因。事实上,我不知道可能是什么。我试图通过在index.ts 文件中使用console.log(router) 来查看路由器内容(在被expressInstance.ts 导入之前),但它不起作用,因为代码甚至没有执行。
【问题讨论】:
-
@Andy 这并不能解决我的问题。
标签: javascript typescript express module undefined