ItsEvilTime
@ItsEvilTime
Сайленсер не дает мне покоя

Как исправить ошибку во время json.parse?

С формы отправляю данные на сервер (node.js) таким образом:
var data = {
  title: "some title",
  desc: "some desc"
}
var xhr = new XMLHttpRequest();
xhr.open("POST", "/add_movie", true);
xhr.send(JSON.stringify(data));


Обрабатываю прием этих данных таким образом:
var body = '';
req
  .on('readable', function() {
    body += req.read();
  })
  .on('end', function() {
    try {
      body = JSON.parse(body);
      // далее код
    } catch (err) {
      return new SystemError(500, err, 'routes/rk_after', 'Парсим JSON');
    }

  });


Мне приходят данные, я их редактирую как нужно и в целом все работает нормально.
Данный код может 200 раз сработать корректно, а на 201-ый выдать ошибку. Затем еще раз 150 все будет гладко, а потом опять ошибка.

Текст ошибки:
Тип: System error
        Статус: 500
        Сообщение: SyntaxError: Unexpected token o
        Файл: routes/rk_after
        Место: Парсим JSON
        Stack: SyntaxError: Unexpected token o
     at Object.parse (native)
     at IncomingMessage.<anonymous> (/var/www/loststore/routes/rk_after.js:16:21)
     at emitNone (events.js:67:13)
     at IncomingMessage.emit (events.js:166:7)
     at endReadableNT (_stream_readable.js:913:12)
     at nextTickCallbackWith2Args (node.js:442:9)
     at process._tickCallback (node.js:356:17)


Т.е. по ответу ошибка происходит именно в этом месте, try не выполняется и срабатывает catch.

Я не могу понять, от чего зависит вылет этой ошибки. Я для проверки вставлял один и тот же текст в форму и по многу раз его отсылал (текст - просто цифры 111). 300 раз - полет нормальный, 301-ый - ошибка, еще раз 220 все хорошо - 221-ый - ошибка.

В чем проблема?
  • Вопрос задан
  • 1918 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы