簡體   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