【问题标题】:ExpressJs req.body showing undefinedExpressJs req.body 显示未定义
【发布时间】:2020-09-25 23:19:49
【问题描述】:

我是 ExpressJs 的新手,我想执行一个 POST 请求,但我无法让 Body Parser 工作

const express = require("express");
const path = require("path");
const config = require("./config");
// const logger = require("./middleware/logger")

// init express
const app = express();

// set 'public' as STATIC directory
app.use(express.static(path.join(__dirname, "public")));

// init middleware
// app.use(logger);

// setup parent router for api/people
app.use('/api/people', require("./routes/api/members"));

// adding body parser middleware
app.use(express.json());
app.use(express.urlencoded({ extended: false }));


// set PORT listen
app.listen(config.PORT, () =>
  console.log(
    `damiisdandy's server running on port ${config.PORT}... at ${config.time}`
  )
);

这里是路由文件

const express = require('express')
const uuid = require('uuid')
const config = require('../../config')
const router = express.Router();


router.post("/", (req, res) => {
    res.send(req.body)
    console.log(req.body)
    // const newMember = {
    //     id: uuid.v4(),
    //     name: req.body.name,
    //     email: req.body.email,
    //     active: true,
    // }
    // if(!newMember.name || !newMember.email) {
    //     return res.status(400).json({
    //         msg: "Please Fill in the Name or Email"}
    //     );
    // }
    // config.PEOPLE.push(newMember);
    // res.json(config.PEOPLE);
})

module.exports = router

请我尽快回复,我什至尝试过“body-parser”模块,但这似乎也不起作用..我被卡住了..请问我该怎么办?

【问题讨论】:

  • console.log(req.body) 显示了什么?

标签: javascript node.js api express post


【解决方案1】:

您的 index.js 文件中有 3 行吗?

// import body parser
const bodyParser = require('body-parser');

// support parsing of application/json type post data
app.use(bodyParser.json());

//support parsing of application/x-www-form-urlencoded post data
app.use(bodyParser.urlencoded({ extended: true }));

【讨论】:

  • 您不再需要使用body-parser,因为express 4.x 及更高版本已内置这些功能
【解决方案2】:

它不适用于您的路由,因为您的 .use 语句在您的父路由器之后。

您需要像这样将这些移动到您的父路由器上方:

// adding body parser middleware
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

// setup parent router for api/people
app.use('/api/people', require("./routes/api/members"));

我相信您不需要显式安装或应用 bodyParser,因为 express 现在内置了它。试试这个,看看它是否有效,如果无效,我们可以进一步探索。

【讨论】:

    猜你喜欢
    • 2012-02-28
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多