Не работает req.on('data', () =>{}) на nodejs

Вот простейший код на ноде, стоит 16.13.0 LTS версия:

const { createServer } = require('http');

const PORT = 3000;

const server = createServer((req, res) => {
let body = '';

req.on('data', (chunk) => {
    body = chunk.toString();
});

req.on('end', () => {
    const parsedBody = JSON.parse(body);
    console.log('Parsed body', parsedBody);
    const propsCount = Object.keys(parsedBody).length;
    console.log('Props count', propsCount);
    res.writeHead(
        200,
        {
            'Content-type': 'text/plain'
        }
    )
    .end(`Body from request has been succesfully accepted and parsed. It has ${propsCount} props`);
});
});

server.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});

Через Postman отправляю POST запрос с массивом в JSON формате:

{
    "dsad": "string data",
    "prid": true,
    "prdop3": "1337"
}

Приходит ошибка следующая:

undefined:1
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)

Перед parsedBody вставлял console.log(body), чтобы взглянуть что там в переменной, а там пусто и соответсвенно такая ошибка. Не работает именно та часть, где идет обработка req.on('data', (chunk) , я не понимаю в чем проблема, помогите пж.


Ответы (2 шт):

Автор решения: Verkt

У меня в chunk ничего не было из-за того, что инпутам формы не дал name. Но форма отправлялась стандартным способом html.

→ Ссылка
Автор решения: Qwertiy
body = chunk.toString();

Во-первых, за это надо руки отрывать. Не все же в США живут.

Во-вторых, предполагалось +=, а не =.

А правильно делать так:

var chunks = []

request.on('data', chunk => chunks.push(chunk))

request.on('end', () => {
  var body = Buffer.concat(chunks) + ""

Но форма отправлялась стандартным способом html.

html вообще не отправляет формы в json, насколько я помню.

→ Ссылка