req.body 在 express.js 应用程序中未定义(路径正确,使用了正文解析器,正文具有键和值)但 req.body 未定义

req.body is undefined in express.js application (paths are correct, body parser is used, body has keys and values) but req.body is undefined

Express 应用程序未获取通过 React 应用程序发送的正文,它打印未定义但是反应和节点 js 方法中的路径都是正确的,使用了 body-parser,正文在反应中具有键和值js 方法。我找不到问题。

客户端方法。尝试调用服务器中定义的 post 方法。

 const handleSignUp = () => {
      //  dispatch(setLoadingState("loading"));
        const userData = {
          firstName: firstName,
          lastName: lastName,
          email: email,
          password:password
        }
        var headers = { 'Content-Type': 'application/json' }
        axios.post('/api/auth/create',userData, {
          headers :{ 'Content-Type': 'application/json' }})
        .then(function (response) {    
              console.log(response);

服务器方法

 const express = require("express");
    const { MongoClient, ObjectID } = require("mongodb");
    const app = express();
    const cors = require("cors");
    const cookieParser = require("cookie-parser");
    const bodyParser = require('body-parser');
    const axios=require('axios');
    const port = 3001;


    // Connection URL

    app.use(cors());
    app.use(express.json());
    app.use(cookieParser());

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));

    const url = 'mongodb://localhost:27017';

    // Database Name
    const dbName = 'sample';

    // Create a new MongoClient
    const client = new MongoClient(url);

    // Use connect method to connect to the Server



    client.connect(err => {
      if (err) {
        console.log(err);
        process.exit(1);
      } 

    console.log("Connected successfully to server");

    const db = client.db(dbName);


    app.post("/api/auth/create", (req, res) => {
      console.log("AuthService server", req.body.userData);
      db.collection("users").insertOne({
        firstName: req.body.userData.firstName,
        lastName: req.body.userData.lastName,
        email: req.body.userData.email,
        password: req.body.userData.password
      });

      res.send("You are a registered user now");
    });



    app.listen(port, () => console.log(`Example app listening on port ${port}!`));
    });```




  I can see in log in auth Service method that body is undefined.


    log :AuthService server undefined
    Error :TypeError: Cannot read property 'firstName' of undefined

req.body.userData 不存在,这就是它未定义的原因,试试这个:

app.post("/api/auth/create", (req, res) => {
  db.collection("users").insertOne({
    firstName: req.body.firstName,
    lastName: req.body.lastName,
    email: req.body.email,
    password: req.body.password
  });
  res.send("You are a registered user now");
});

在前端部分试试这个:axios.post('/api/auth/create',{userData},

我在后端更改了代码

    console.log("AuthService server", req.body.userData);
    const { userName, email, password } = req.body.userData;
 db.collection("Users").insertOne({
            userName,
            email,
            password,
          });
}```

and in the frontend 

```const handleSignUp = () => {
    //  dispatch(setLoadingState("loading"));
    const userData = {
      userName,
      email,
      password,
    };

    axios
      .post("/api/auth/create", { userData })
      .then(function (response) {
        dispatch(setLoadingState("init"));

        if (response.data === "OK") {
          setResponseMessage(true);
          setIsErrorMessage(false);
        } else {
          setResponseMessage(false);

          setIsErrorMessage(true);
        }
      })
      .catch(function (error) {
        console.log(error);
      });
  };```