【问题标题】:Connection lost - read ECONNRESET \ write EPIPE连接丢失 - 读取 ECONNRESET \ 写入 EPIPE
【发布时间】:2019-09-23 23:05:11
【问题描述】:

我已经在 node js 中构建了一个这样的控制器:

  *@UseGuards(AuthenticationGuard)
  @ApiOperation({ title: 'Add Refund', description: 'add new reund with file' })
  @HttpCode(HttpStatus.OK)
  @ApiResponse({
    status: HttpStatus.OK,
    description: 'Upload File Success',
  })
  @UseInterceptors(FileInterceptor('file',
  {
    storage: diskStorage({
      destination:  __dirname,//+"/../../../../" , 
      filename: (req, file, cb) => {
      const randomName = Array(32).fill(null).map(() => (Math.round(Math.random() * 16)).toString(16)).join('')
      return cb(null, `${randomName}${extname(file.originalname)}`)}
    }
    )}
    ))

  @HttpCode(HttpStatus.NOT_FOUND)
  @ApiResponse({
    status: HttpStatus.OK,
    description: 'Invalid Upload File',
  })
  @Post(refundsUrls.addRefund)
  doAddRefund( @Req() request,
    @Body('refund_type') refundType:number,
    @Body('currency_code') currencyId:number,
    @Body('amount') amount:number,
    @Body('flight_id') flightId:number,
    @Body('is_iai_card') isIaiCard:string,
     @Body('local_image_path') localImagePath:string,
    @Body('refund_date') refundDate:Date
    ,@UploadedFile() file): Promise<RefundDataInterface> {


      const { id } = request.user;
  return this.refundProvider.addRefund(id,refundType,currencyId,amount,flightId,isIaiCard,localImagePath,refundDate,file);

  }*

该方法获取一些字符串参数和一个文件,并将信息保存在数据库中,在我的本地主机中它运行良好,但是当我将代码上传到真实服务器时,它会因此错误而崩溃:

“错误”:{ “状态码”:404, "message": "错误:连接丢失 - 读取 ECONNRESET",

或:

“错误”:{ “状态码”:404, "message": "错误:连接丢失 - 写入 EPIPE"

我无法在我的本地调试站上出现这个错误,这个错误可能是什么原因?

【问题讨论】:

  • 能否尝试通过 SSH 访问您的部署服务器,并使用 mysql 命令尝试连接到 mysql 服务器?

标签: node.js nestjs


【解决方案1】:

我认为这段代码运行良好,因为它可以在您的机器上运行,但我猜您无法连接到服务器上的数据库。在没有看到连接设置的情况下,您可以将 localhost 设置为数据库访问权限,但在 linux 服务器上,您应该将其 IP 替换为 127.0.0.1。 没有任何信息,很难提供更多帮助。

【讨论】:

  • 再次感谢您的回答:),您确定这是数据库连接问题吗?本地机器和云服务器都使用相同的远程数据库和相同的连接字符串
  • 对我来说似乎是这样。根据数据库,它可能会阻止远程访问。例如,对于 mysql 的 xample,应该创建具有读/写访问权限的 root@localhost 用户。您应该检查是否可以从您的服务器访问数据库。
猜你喜欢
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
相关资源
最近更新 更多