NodeJS Fetch:处理同一获取请求的网络错误类型

问题描述 投票:0回答:1

如何检查同一请求的网络错误类型?

我的nodejs代码:

try {
   const response= await fetch("https://app.local")
   
} catch (err) {
  console.log(err);
}

我进入控制台:

TypeError: fetch failed
    at node:internal/deps/undici/undici:12502:13
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at StatusController.health (/app/src/src/controllers/status.controller.ts:40:19)
    at /app/src/node_modules/@nestjs/core/router/router-execution-context.js:46:28
    at /app/src/node_modules/@nestjs/core/router/router-proxy.js:9:17 {
  [cause]: Error: getaddrinfo ENOTFOUND app.local
      at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:120:26) {
    errno: -3008,
    code: 'ENOTFOUND',
    syscall: 'getaddrinfo',
    hostname: 'app.local'
  }
}

我想查看

code: 'ENOTFOUND'
;

... catch (err) {
  if(err.code=='ENOTFOUND') bla bla;
}

但是

err.code
始终未定义。
err.message
输出:获取失败

node.js error-handling fetch fetch-api
1个回答
0
投票

在fetch之前添加

const fetch = require('node-fetch');
我们可以得到
err.code
这太奇怪了。如果不需要 Fetch,我就无法完全使用它。

const fetch = require('node-fetch');
try {
   const response= await fetch("https://app.local")
} catch (err) {
  console.log(err.code);
}
© www.soinside.com 2019 - 2024. All rights reserved.