Как проверить тип сетевой ошибки по тому же запросу?
Мой код nodejs:
try {
const response= await fetch("https://app.local")
} catch (err) {
console.info(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 вывод: не удалось получить данные





Это работает с добавлением const fetch = require('node-fetch'); перед выборкой, которую мы можем получить err.code.
Это так странно. Я не могу полноценно использовать Fetch, не требуя этого.
const fetch = require('node-fetch');
try {
const response= await fetch("https://app.local")
} catch (err) {
console.info(err.code);
}
Вы можете получить его с помощью: err.cause.code.
Тип ошибки должен быть отмечен как TypeError (подробнее: https://developer.mozilla.org/en-US/docs/Web/API/fetch).