Ответы пользователя по тегу Node.js
  • Почему express отдает пустой req.body?

    @grisha228
    Вариант N1

    Подключить body-parser

    Код
    npm install body-parser

    const express = require('express');
    const { v4: uuidv4 } = require('uuid');
    const app = express();
    const port = 3000;
    const bodyParser = require('body-parser');
    
    app.use(express.urlencoded({ extended: false }))
    app.use(express.json());
    
    app.use(bodyParser.json())
    
    app.post('/api/text',(req, res) => {
        console.log("---", req.body);
        res.send("text");
    
    })
    
    app.listen(port, () => {
        console.log(`Example app listening on port ${port}`)
    })


    Вариант N2

    При помощи chunk.
    ВАЖНО. Вывод делать внутри end или переделать код в асинхронную функцию и делать await для on('data'). В данном случае body можно вызвать только внутри:
    req.on('end', () => {
            console.log("---", body);
        });

    в ином случае он будет пустой, тк body не успевает записаться, а on.('end') выполняется.

    Код
    const express = require('express');
    const { v4: uuidv4 } = require('uuid');
    const app = express();
    const port = 3000;
    
    app.use(express.urlencoded({ extended: false }))
    app.use(express.json());
    
    app.post('/api/text',(req, res) => {
        let body = '';
        req.on('data', chunk => {
            body += chunk.toString();
        });
        req.on('end', () => {
            console.log("---", body);
        });
        res.send("text");
    
    })
    
    app.listen(port, () => {
        console.log(`Example app listening on port ${port}`)
    })

    Ответ написан
    Комментировать