Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Tryd0g0lik
56 / 3 / 1
Регистрация: 04.05.2012
Сообщений: 241

Сервер, ctx.request.body возвращает undefined. Где ошибка? подскажите

23.08.2023, 08:33. Показов 1550. Ответов 22

Студворк — интернет-сервис помощи студентам
ДЕнь добрый.

Отправляю запрос
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(async () => {
        const res = await fetch('http://localhost:7070/', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json;charset=utf-8'
            },
            body: JSON.stringify("{'phone':'11111', 'name': 'Kuku'}"),
            mode: 'no-cors'
        });
 
        const result = await res;
        const jsonRes = await JSON.stringify(result);
        return jsonRes
    })();
И на сервере `ctx.request.body || ctx.body` вместо `body` получаю `undefined`
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const Koa = require('koa');
const json = require('koa-json');
const Router = require('koa-router');
// ...
 
router.post('/', (ctx: any) => {
    console.log('ROUTER request POST');
    const body = ctx.request.body;
 
 
    ctx.response.body = { status: "OKs" }
        console.log(ctx); // то что видим в консое
 
    ctx.response.set('Access-Control-Allow-Origin', '*');
    ctx.response.set('Access-Control-Allow-Headers', 'POST');
 
});
 
 
 
const server = http.createServer(app.callback())
const wsServer = new WS.Server({ server });
 
wsServer.on('connection', (ws: any) => {
 
    ws.send('Hello Ws connection')
});
Хотя `ctx.response.body` в ответе вижу.

При это консоль
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
  request: {
    method: 'POST',
    url: '/',
    header: {
      'content-type': 'application/json',
      'user-agent': 'PostmanRuntime/7.32.2',
      accept: '*/*',
      'cache-control': 'no-cache',
      'postman-token': '...',
      host: 'localhost: 7070',
      'accept-encoding': 'gzip, deflate, br',
      connection: 'keep-alive',
      'content-length': '33'
    }
  },
  response: {
    status: 200,
    message: 'OK',
    header: [Object: null prototype] {
      'content-type': 'application/json; charset=utf-8'
    }
  },
  app: { subdomainOffset: 2, proxy: false, env: 'development' },
  originalUrl: '/',
  req: '<original node req>',
  res: '<original node res>',
  socket: '<original node socket>'
}
Что не так или не туда смотрю.
Посему консоль даже не показывает `body`? Подскажите.

Добавлено через 1 минуту
Вроде нашёл ответ.
Подключил
JavaScript
1
2
3
4
5
const { koaBody } = require('koa-body');
 
app.use(koaBody({
    urlencoded: true,
}));
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.08.2023, 08:33
Ответы с готовыми решениями:

Сервер возвращает ошибку 400 Bad Request
Посылаю серверу пакет данных, который получаю от браузера. Использую сокеты для отправки и приёма. например для доступа к mail.ru такой...

Научите прикручивать request body
Всем привет, я, так сказать,только на пути к просветлению. Нужно послать с помощью request.post запрос на определеный сайт. С помощью...

Stream в Request/Response Body
Добрый день, может кто объяснить, почему body это стрим, почему он не может прийти строкой, и если все же это стрим, то откуда я его...

22
 Аватар для Tryd0g0lik
56 / 3 / 1
Регистрация: 04.05.2012
Сообщений: 241
24.08.2023, 14:20  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от krvsa Посмотреть сообщение
JSON.stringify - не асинхронный
тут и не было смысла об асинхронности думать. Это лишь настроки к fetch

Хорошо. Попробую переписать верверный код , чтоб использовать `.json()`
Сейчас это лишь выдает ошибку так как уже в формате json получаю
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3864 / 1769 / 434
Регистрация: 14.03.2022
Сообщений: 4,460
24.08.2023, 14:23
Вот тебе вариант с async / await...

JavaScript
1
2
3
4
5
(async _ => {
   const res = await fetch('https://jsonplaceholder.typicode.com/todos/1')
   json = await res.json()
   console.log(json)
})()
Добавлено через 1 минуту
Цитата Сообщение от Tryd0g0lik Посмотреть сообщение
Это лишь настроки к fetch
Тут вообще я ничего не понял...

Добавлено через 1 минуту
Цитата Сообщение от Tryd0g0lik Посмотреть сообщение
Попробую переписать верверный код
Если тебе нужна именно строка в ответе - читай ответ методом .text()
Серверный код ведь тебе устраивал. Ты просто не понимаешь как получить теле ответа.
0
1 / 1 / 0
Регистрация: 19.11.2020
Сообщений: 1
24.08.2023, 16:31
У тебя есть несколько проблем с кодом, которые могут привести к тому, что ctx.request.body возвращает undefined.

Отсутствие body-parser: Когда ты используешь Koa.js и хочешь работать с телом запроса, тебе например надо использовать middleware для разбора тела запроса. Самым популярным из них является koa-bodyparser.

JSON stringify: В твоем запросе fetch ты вызываете JSON.stringify на строке, что приведет к двойному кодированию.

добавь
const bodyParser = require('koa-bodyparser');
//...

app.use(bodyParser());

вместо
body: JSON.stringify("{'phone':'11111', 'name': 'Kuku'}"),

используй
body: JSON.stringify({'phone':'11111', 'name': 'Kuku'}),
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.08.2023, 16:31

Подскажите почему сервер возвращает пустое значение
Форумчане, очень требуются ваши советы да и в целом помощь. Есть сервер на C# и есть расширение Chrome, не могу отправить данные на...

Can't deserialize request body into type: LoginPassword
Добрый день, Прошу помочь, уже пересмотрел кучу форумов. Подскажите пожалуйста - как можно исправить ошибку: Can't deserialize...

Подскажите, Сервер принимает запросы, выполняет и возвращает ответ
Добрый день! Если программа сервер будет принимать от клиентского приложения команду выполнить SQL запрос, сервер будет выполнять запрос...

Required request body is missing: public org.springframework
Т.к. ответить на мой вопрос как отправить массив из Локал сторидж не смогли ни...

Препод говорит где - то ошибка в синтаксисе. Сам код взят из "жефри Рихтер - Создание эффективных WIN32 приложений" Пожалуйста, подскажите где ошибка!
// получаем код ошибки DWORD dwError = GetDlgItemInt(hwnd, IDC_ERRORCODE, NULL, FALSE); HLOCAL hlocal = NULL; // буфер для строки с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru