Search code examples
node.jsexpressrestbody-parser

Express 4.17 req body is empty


The req.body always is empty.

index.js:

const express = require('express');
const app = express();
const port = 8080;

app.use(express.static('public'))
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

const userRoutes = require('./routes/user.routes');
app.use("/user", userRoutes);

app.listen(port, () => console.log("app listening."));

routes/user.routes:

const express = require('express');
const router = express.Router();

router.post('/', (req, res) => {
    res.json({ requestBody: req.body });
});

module.exports = router;

client script:

fetch('/user', {
        method: 'POST',
        body: JSON.stringify({ testData: "testData" }),
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
    })
    .then(function(response) {
        return response.json();
    })
    .then(function(responseData) {
        console.log(responseData);
    })
    .then(function(result) {
        if (result.error) {
            alert(result.error.message);
        }
    });

Result of fetch in console:

{requestBody: {}}

Solution

  • make sure that you install the latest express version locally by using this command:

    npm i -S express
    

    if the problem persists, try using another Browser