Node.js запрос прерван

#javascript #node.js #express #body-parser

#javascript #node.js #выразить #тело-анализатор

Вопрос:

Я использую express и body-parser для отправки больших объемов данных с одного сервера на другой, но через некоторое время я получаю это исключение:

 {
    "message": "request  aborted",
    "code": "ECONNABORTED",
    "expected": 99010,
    "length": 99010,
    "received": 96872,
    "type": "request.aborted"
}
  

Что могло вызвать это? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

ОБНОВИТЬ Это мой настроенный предел:

 application.use(bodyParser.json({ limit: '50mb' }));
application.use(bodyParser.urlencoded({ extended: true, limit: '50mb' }));
  

Комментарии:

1. Это проблема с ограничением ?

2. Тайм-аут? Из-за слишком большого объема данных? Возможно, вам следует рассмотреть потоковую передачу, вместо того, чтобы отправлять все в одном блоке

3. Также попробуйте запустить свои приложения с помощью переменной ‘DEBUG =body-parser:*’ env и проверьте журналы основного синтаксического анализатора на наличие внутренних предупреждений / ошибок.

4. @Agustin, вы решили эту проблему?? Я получаю ту же ошибку.

5. Я нашел этот комментарий: github.com/expressjs/body-parser/issues /…

Ответ №1:

это исключение, генерируемое необработанным телом, которое используется body-parser

из express-docs:

запрос прерван Эта ошибка возникает, когда запрос прерывается клиентом до завершения чтения тела. Полученному свойству будет присвоено значение количества байтов, полученных до того, как запрос был прерван, а ожидаемому свойству будет присвоено значение количества ожидаемых байтов. Свойству status присвоено значение 400, а свойству type присвоено значение ‘request.aborted’.

если вы хотите обработать все запросы, отправленные из синтаксического анализатора тела, например

   'encoding.unsupported',
    'entity.parse.failed',
    'entity.verify.failed',
    'request.aborted',
    'request.size.invalid',
    'stream.encoding.set',
    'parameters.too.many',
    'charset.unsupported',
    'encoding.unsupported',
    'entity.too.large'
  

используйте это промежуточное программное обеспечение

 $ npm i express-body-parser-error-handler
  

и просто поместите его сразу после инициализации вашего тела-синтаксического анализатора

 const bodyParserErrorHandler = require('express-body-parser-error-handler')
...
...

application.use(bodyParser.json({ limit: '50mb' }));
application.use(bodyParser.urlencoded({ extended: true, limit: '50mb' }));
application.use(bodyParserErrorHandler());
...