【问题标题】:nestjs with axios, handling connect ENETUNREACHnestjs 与 axios,处理连接 ENETUNREACH
【发布时间】:2022-02-04 23:40:29
【问题描述】:

我对 Nestjs 还是很陌生。

我正在构建一个应用程序,该应用程序从其他设备获取图像。但是,设备的互联网连接不稳定。有时,它会产生错误,例如,

[Nest] 30899 - 02/04/2022, 8:09:25 PM 错误 [ExceptionsHandler] 连接 ENETUNREACH 0.0.0.0:11 错误:连接 ENETUNREACH 0.0.0.0:11

发生错误时,Axios函数的下面几行没有执行,我想避免。

因此,我想知道如何捕捉这个错误来处理(try catch 块不适用于这种情况)。

这是我的代码以防万一。

try {
        const response: AxiosResponse = await this.httpService.axiosRef({
          url: `http://${cam.publicIP}:${cam.webPort}/capture`,
          method: 'GET',
          responseType: 'arraybuffer',
          timeout: 1500,
        })
        const buffer = Buffer.from(response.data, "utf-8");
        const resized = await sharp(buffer).extract({
          left: 100,
          top: 0,
          width: 600,
          height: 600,
        }).resize().toBuffer();
        const imageUrl = await this.storageService.upload('images', {
          name: imageName,
          buffer: resized
        });
        console.log(imageUrl);

        snapshot.imageUrl = imageUrl;
        // await snapshot.save();
        console.log(snapshot.id);


      } catch (error) {
        this.logger.debug(error);
      }

【问题讨论】:

    标签: axios nestjs


    【解决方案1】:

    0.0.0.0 不是有效的 IP 地址。从历史上看,它已用于在绑定到本地端口以接受传入连接时指定所有本地 IP 地址。一些操作系统/客户端/堆栈已将其扩展为本地主机,但您不应期望它总是有效。如果要连接到 localhost,请使用 127.0.0.1

    如果axios 抛出此错误,您的代码没有理由无法捕获此错误。检查错误是在哪里引发的 - 它可能是在其他地方引发的。

    【讨论】:

    • 实际上,0.0.0.0 只是一个用于隐藏公共 IP 地址的样板。我刚刚发现与我的容器同步导致了这个错误。正如您所说,try-catch 块没有理由不捕获错误。无论如何,谢谢你的帮助:)
    猜你喜欢
    • 2022-06-13
    • 2017-04-28
    • 1970-01-01
    • 2012-03-28
    • 2022-01-14
    • 2023-02-12
    • 2021-01-06
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多