Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 July 19

А

Алексей in NodeUA - JavaScript and Node.js in Ukraine
а без профиля линкедин на мероприятие не попасть?
источник

T

Taras in NodeUA - JavaScript and Node.js in Ukraine
Конечно, просто пропустите это поле.
источник

А

Алексей in NodeUA - JavaScript and Node.js in Ukraine
понял, просто везде звёздочка стоит что намекает на обязательность
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Спасибо. Я использую в проекте koajs и использую koa-bodyparser, вроде норм его подключаю.

const Koa = require('koa');
const Router = require('@koa/router');
const bodyParser = require('koa-bodyparser');
const dotenv = require('dotenv');

const app = new Koa();
const router = new Router();

const postAuthHandler = require('./application/api/handlers/postAuthHandler');

const host = process.env.HOST || '0.0.0.0';
const port = process.env.PORT || 5000;

dotenv.config();

router.post('/api/', postAuthHandler());

app.use(bodyParser()).use(router.routes()).use(router.allowedMethods());

app.listen(port, host, function () {
 console.log('Listen on' + host + ':' + port);
});
Это я переименовал путь auth в api
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
в  /api/ не видит данные, правильно ?)
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Проблема моя остается, если делаю post-запрос c клиента localhost:3010(запущенный через gulp) на бекенд  localhost:5000 , то бекенд не видит payload, приходит пустой объект.
Хотя через постман отлично проходят запросы на на бекенд  localhost:5000.

Еще что интересно, что когда я шлю ответ с бекенда на клиент, то если я отсылаю простую строку, то клиент видит её, а если объект, то не видит.

Вот так клиент видит ответ:
ctx.body = JSON.stringify('Access denied');
А так нет:
ctx.body = JSON.stringify({ response: 'Access denied', statusCode: 500 });

Код на клиенте тот же:

    (async () => {
     const response = await fetch('http://localhost:5000/api/', {
       method: 'POST',
       mode: 'no-cors',
       headers: {
         'content-type': 'application/json'
       },
       body: JSON.stringify({pass: '123'}),
     });

     const result = await response.json();

   })();
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Может и правда что-то с парсером не так. В выходные я пытался делать настройки прокси и в package.json и в вебпаке, но это не помогло...
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Я вот еще пробовал скопировать headers запроса у постман и вставить в запрос на клиенте, но это не помогло. Непонятно, почему с клиента сервер не видит payload.
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
@Hdhrer4 есть идеи у тебя?
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
ну тут ты делаешь запрос сразу на 5000, он не видит тело?
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Верно, не видит.
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
попробуй две строчки местами поменять
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
router.post('/api/', postAuthHandler());

app.use(bodyParser()).use(router.routes()).use(router.allowedMethods());
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Вот код на сервере:
module.exports = function postAuthHandler(key, url) {
 return async function (ctx, next) {
   const { pass } = ctx.request.body;
   console.log(ctx.request.body);

   ctx.set('Content-Type', 'application/json');
   ctx.status = 500;
   ctx.body = JSON.stringify({ response: 'Access denied', statusCode: 500 });
 };
};

Если через постман отправляю, то в косноль.лог выводится тело запроса, а если из localhost:3010 то пусто({})
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
спс, сейчас попробую
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
покажи запрос с постмана,точнее место куда ты тело вбиваешь
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Вот так все работает в постмане: https://bit.ly/3iG7HtN
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
а заголовки там какие, headers
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Я вот так написал, поменял, не помогло:
app.use(bodyParser()).use(router.routes()).use(router.allowedMethods());

router.post('/api/', postAuthHandler());
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Заголовки там: https://bit.ly/3zbDl8X но я пытался их копировать, это не помогло.
источник