【问题标题】:Express Request Aborted快速请求中止
【发布时间】:2020-10-22 16:34:39
【问题描述】:

我正在使用 Express.js 来实现我的后端。我经常得到错误。我不知道为什么。

我将源代码放入 AWS Elastic Beanstalk 并设置 ELB。如果此错误触发次数过多,将导致所有用户无法连接到服务器。我总是重启 Beanstalk 实例来解决这个问题。但我不知道什么时候会触发这个错误。所以请帮我解决它。

非常感谢。

{     
    BadRequestError: request aborted
    at IncomingMessage.onAborted (/var/app/current/node_modules/raw-body/index.js:231:10)
    at IncomingMessage.emit (events.js:189:13)
    at IncomingMessage.EventEmitter.emit (domain.js:441:20)
    at abortIncoming (_http_server.js:449:9)
    at socketOnClose (_http_server.js:442:3)
    at Socket.emit (events.js:194:15)
    at Socket.EventEmitter.emit (domain.js:441:20)
    at TCP._handle.close (net.js:600:12)
    message: 'request aborted',
    code: 'ECONNABORTED',
    expected: 18774,
    length: 18774,
    received: 0,
    type: 'request.aborted',
    expose: true,
    statusCode: 400,
    status: 400 
} 
app.use((req, res, next) => {
  logger.info(`marker 1, ${req.header('Content-Type')}, ${req.header('Content-Length')}`)
  next()
})

app.use(express.json({
  type: 'application/json',
  limit: '50mb',
  strict: false,
  verify: (req, res, buf, encoding) => {
    logger.info(`marker 2, ${req.body.length}`)
  }
}));
app.use(express.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));

// catch 404 and forward to error handler
app.use(function(e, req, res, next) {
  // set locals, only providing error in development
  logger.error(e);
  const err = SQError.wrapError(e);
  
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.httpCode || 500);
  var response = req.body.params ? req.body : {};
  logger.error(err, req.app.get('env') === 'development' ? {method: req.body.method || ""} : {});
  if(response.params) 
    response.params.error = err.toJson()
  else 
    response = { error : err.toJson() }
  res.json(response);
});

【问题讨论】:

  • 请打码!!!
  • 阅读 multer js 模块,我认为它对于发送请求正文数据很有用。
  • 更新部分源代码
  • 我发现这个错误是在发送json时触发的。 json 大小为 15000B 到 2xxxxB。只有这个api有这个问题。其他 api 工作正常。

标签: javascript node.js express


【解决方案1】:

当请求在读取正文完成之前被客户端中止时,将发生此错误。 status 属性设置为 400,type 属性设置为“request.aborted”。请放设置快递代码!

【讨论】:

  • 它没有回答!请输入它,就像评论一样。
  • 哇,这实际上是我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-06
  • 2013-03-03
相关资源
最近更新 更多