【问题标题】:BodyParser causes all API requests to hang. Even basic GET requestsBodyParser 导致所有 API 请求挂起。甚至是基本的 GET 请求
【发布时间】:2021-11-03 21:26:09
【问题描述】:

正如标题所说,我根本不明白这里发生了什么。一旦我包含app.use(bodyParser.json) 行,邮递员就会继续处理我提出的任何请求。一天中的大部分时间我都以为自己搞砸了路线。

我在这个小测试文件中缩小了范围:

const express = require("express")
const bodyParser = require("body-parser")
const env = require("dotenv");
const app = express()

env.config();
app.use(bodyParser.json);

app.get("/", (req, res) => {
    res.status(200).json({
        message:"Hello World"
    })
});

app.post("/data", (req, res) => {
    req.status(200).json({
        message: req.body
    })
});

app.listen(process.env.PORT, ()=>{
    console.log(`Server listening at port ${process.env.PORT}`);
})

谁能告诉我发生了什么以及如何解决它?

【问题讨论】:

    标签: express post postman body-parser


    【解决方案1】:

    您需要将 JSON 正文解析器作为函数调用(带括号):

    app.use(bodyParser.json());
    

    post方法“data”还有一个bug,你应该从“res”对象调用status:

    app.post("/data", (req, res) => {
        res.status(200).json({
            message: req.body
        })
    });
    

    【讨论】:

    • 我试过了,VS Code 将其击穿并将其标记为已弃用,并且在收到 POST 请求后,服务器崩溃并显示 TypeError 说“req.status 不是函数”。
    • 因为您从“req”对象调用状态函数,而它应该来自响应对象 res.status(200).....,所以我将编辑我的答案以涵盖第二个错误。跨度>
    猜你喜欢
    • 1970-01-01
    • 2020-05-12
    • 2015-02-04
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多