[英]Router.use() requires a middleware function but got a string
我收到这个错误
E:\server\node_modules\express\lib\router\index.js:469 throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn)) ^ TypeError: Router.use()需要中间件 function 但在 Function.use (E:\PROJECT\New folder\New folder\server\node_modules\express\lib\router\index.js:469:13) 在 Function 处获得了一个字符串。 (E:\PROJECT\New 文件夹\New 文件夹\server\node_modules\express\lib\application.js:227:21)
在 Array.forEach () at Function.use (E:\PROJECT\New folder\New folder\server\node_modules\express\lib\application.js:224:7) at Object。 (E:\PROJECT\New folder\New folder\server\index.js:27:5) 在 Module._compile (node:internal/modules/cjs/loader:1126:14) 在 Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10) 在 Module.load (node:internal/modules/cjs/loader:1004:32) 在 Function.Module._load (node:internal/modules/cjs/loader :839:12) 在 Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
索引.js
const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const dotenv = require("dotenv");
const todoRoute = "./Routes/todo-route.js";
const app = express();
dotenv.config();
app.use(cors());
app.use(express.json());
mongoose
.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
})
.then(console.log("DB Connected successfuly"))
.catch((error) => {
console.log(error);
});
app.get("/", (req, res) => {
res.send("this is the homepage");
});
app.use("/api/todos", todoRoute);
const PORT = 5000 || process.env.PORT;
app.listen(PORT, () => {
console.log(`Listening on http://localhost:${PORT}`);
});
todo-route.js
const express = require(express);
const router = express.Router();
router.get("/", (req, res) => {
res.send("this is get route");
});
router.post("/", (req, res) => {
res.send("this is post route");
});
router.put("/:id", (req, res) => {
res.send("this is update route");
});
router.delete("/:id", (req, res) => {
res.send("this is delete route");
});
module.exports = router;
也许是因为您没有在 todo-route.js 中正确导入 express
它应该是:
```
const express = require("express");
```
app.use 的第二个参数应该是一个回调 function
所以在你的 index.js 中有一行
app.use("/api/todos", todoRoute);
todoRoute 应该使用 require 使其成为 function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.