Как отдать JSON после writeHead

Есть приложение на экспрессе. Я пробую сделать так:

res.writeHead(200, {'Content-Type': 'application/json'});
...
res.send(JSON.stringify({'result': '1', 'path': outputFile}));

На фронте:

fetch(url)
    .then(res => res.json())
    .then(console.log)

res.json использовать не могу, нужно именно после writeHead. Но в итоге на клиенте получаю не JSON, а обычную строку. Как это можно исправить именно со стороны сервера?


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

Автор решения: nörbörnën

Попробуй так:

const express = require('express');

const app = express();

app.get('/data', async (req, res) => {
  res.writeHead(200, { 'Content-Type': 'application/json' });
  res.end(JSON.stringify({ result: '1', path: Date.now() }));
});

app.listen(3003, 'localhost', () => console.log('server runing...'));

Результат:

fetch('/data').then((res) => res.json()).then(console.log)
  Promise {<pending>}
  {result: "1", path: 1622624174762}
→ Ссылка