繁体   English   中英

Router.use() 需要一个中间件 function 但得到一个字符串

[英]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");

```

根据官方 API 参考

app.use 的第二个参数应该是一个回调 function

所以在你的 index.js 中有一行

 app.use("/api/todos", todoRoute);

todoRoute 应该使用 require 使其成为 function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM