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



Express应用程序没有获得通过react应用程序发送的主体,它打印未定义的内容。但是react和node-js方法中的路径都是正确的,使用了body-parser,主体在react 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

在前端部分尝试此操作:axios.post('/api/auth/create',{userData},

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");
});

我在后端中更改了代码

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);
});
};```

最新更新