Невозможно получить тело от выборки в узле с экспрессом. Неожиданный токен <в JSON в позиции 0 - PullRequest
0 голосов
/ 22 октября 2019

У меня есть две службы, где и я хотел бы, чтобы они общались. У меня также установлен обратный прокси-сервер на порту 5470.

В моем первом сервисе у меня есть выборка, куда я отправляю user, и он состоит из некоторых ids.

  const response = await fetch('http://localhost:5470/api/users/facebook', {
    method: 'post',
    headers: { 'Content-type': 'application/json' },
    body: JSON.stringify({ user })
  });

  const token = await response.json();

Я уловил приведенную выше выборку в другом сервисе, подобном следующему:

userRoutes.route('/facebook').get(async (req, res) => {
  const {
    user: { name, facebookId }
  } = req.body;

  try {
    const userExist = await User.findOne({ facebookId });

     if (!userExist) {
       const id = uuid();
       const user = new User({ _id: id, name, facebookId });
       await user.save();

       const now = new Date();
       const weekInMiliseconds = 7 * 24 * 60 * 60 * 1000;
       const expires = now + weekInMiliseconds;

       const payload = {
         userId: id,
         expires
       };

       const token = jwt.sign(JSON.stringify(payload), COOKIE_SECRET);

       res.set({ 'Content-type': 'application/json' });
       res.json(token);
     }

     console.log('User already exist');
     res.redirect('/');
  } catch (error) {
    console.error(error);
    res.sendStatus(404);
  }
});

Моя первая проблема заключается в том, что я знаю, почему не установлен файл cookie (я не получил никакой ошибки. Он просто не работает). Вторая и для меня самая важная проблема - почему не работает res.json(token);? или, может быть, тогда это работает, почему const token = await response.json(); показывает мне FetchError: invalid json response body at http://localhost:5470/api/users/facebook reason: Unexpected token < in JSON at position 0.

Вот репо для этого проекта.

...