我自己刚刚解决了这个错误,我将提供代码来说明我是如何修复它的。
首先,我这里有 3 个文件在播放。
- index.js(调用 API 的文件)
- 用户路由器(发帖的地方)
- 用户控制(其中定义了帖子的详细信息)
此文件引发了错误,特别是第 5 行,我正在导入路由器。
//index.js
const express = require("express");
const cors = require("cors");
const db = require("./db/connection");
const userRouter = require("./routes/user-router"); //PROBLEMATIC LINE
const app = express();
const apiPort = 3000;
app.use(express.urlencoded({ extended: true }));
app.use(cors());
app.use(express.json());
db.on("error", console.error.bind(console, "MongoDB connection error:"));
app.get("/", (req, res) => {
res.send("Hello World!");
});
app.use("/api", userRouter);
显然,post 函数是引发错误的原因。但是,在阅读this Stack Overflow thread 之后,我了解到问题与文件之间的连接有关 - 函数的导入和导出。这导致我查看了控制文件夹。
//user-router.js
const express = require("express");
const UserCtrl = require("../control/user-control"); //PROBLEMATIC LINE (2)
const router = express.Router();
router.post("/user", UserCtrl.createUser); //PROBLEMATIC LINE(1)
module.exports = router;
我发现 module.exports 行是问题所在。我需要做的是用大括号将导出包起来,问题就消失了。
//user-controller.js
const User = require("../models/user-model");
createUser = async (req, res) => {
//...
};
//module.exports = createUser; //PROBLEMATIC LINE
module.exports = { createUser }; //This fixed the problem
我希望通过向您展示我的问题的全部细节,您能够解决您的问题。另外,我希望通过我有限的知识来尝试回答一个问题,我可以建立一些声誉点,以便我能够回应cmets之类的,LOL。如果这对您有帮助,请告诉我。