<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[getaddrinfo ENOTFOUND: что означает и как исправить в Node.js и Postman]]></title><description><![CDATA[<p dir="auto">Ошибка <strong>getaddrinfo ENOTFOUND</strong> в Node.js - это частая проблема при работе с сетевыми запросами. Она возникает, когда система не может найти IP-адрес по указанному доменному имени. В этой статье разберем, почему она появляется в Node.js и Postman, и покажем простые способы исправления.</p>
<p dir="auto">Знание этой ошибки поможет быстро восстановить работу API, баз данных или внешних сервисов. Мы рассмотрим типичные сценарии из практики и пошаговые решения. Это сэкономит часы отладки для бэкендеров и фронтендеров.</p>
<h2>Что значит ошибка getaddrinfo ENOTFOUND</h2>
<p dir="auto">Ошибка <strong>getaddrinfo ENOTFOUND</strong> сигнализирует о неудаче в DNS-разрешении. Функция getaddrinfo из стандартной библиотеки Node.js пытается преобразовать hostname (например, <a href="http://api.nasa.gov" target="_blank" rel="noopener noreferrer">api.nasa.gov</a>) в IP-адрес, но не находит его. Это происходит на уровне системы, до установления соединения.</p>
<p dir="auto">Типичные случаи: неверный домен в коде, проблемы с корпоративным DNS, прокси-серверы или временные сбои у провайдера. В Node.js ошибка часто всплывает при https.get(), axios или подключении к базам данных. В Postman она мешает тестировать API из-за локальных сетевых ограничений. Проблема усугубляется в контейнерах Docker или на VPS с кастомным DNS.</p>
<p dir="auto">Вот основные причины:</p>
<ul>
<li><strong>Неверный hostname</strong>: опечатка в домене или устаревший URL.</li>
<li><strong>DNS-проблемы</strong>: корпоративный фаервол блокирует запросы или DNS-сервер не отвечает.</li>
<li><strong>Прокси и VPN</strong>: настройки сети перенаправляют трафик неправильно.</li>
<li><strong>IPv6-конфликты</strong>: Node.js пытается использовать IPv6, но сервер поддерживает только IPv4.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Причина</th>
<th>Симптомы</th>
<th>Где встречается</th>
</tr>
</thead>
<tbody>
<tr>
<td>Опечатка в домене</td>
<td>ENOTFOUND для несуществующего хоста</td>
<td>Код Node.js, Postman</td>
</tr>
<tr>
<td>Корпоративный прокси</td>
<td>Работает в браузере, не в Node</td>
<td>Офисные сети</td>
</tr>
<tr>
<td>IPv6-проблемы</td>
<td>Локальный ping работает, запрос - нет</td>
<td>Современные ОС</td>
</tr>
<tr>
<td>Неправильный Host header</td>
<td>Axios с кастомными заголовками</td>
<td>Микросервисы</td>
</tr>
</tbody>
</table>
<h2>Как исправить в Node.js: базовые шаги</h2>
<p dir="auto">В Node.js ошибка часто связана с опциями запроса или системными настройками. Сначала проверьте, открывается ли URL в браузере - если нет, проблема в сети. Затем убедитесь, что hostname правильный, без лишних портов или путей в поле host.</p>
<p dir="auto">Частая ошибка - указание полного URL в options.path вместо чистого пути. Например, в https.get() options должны содержать только hostname и path отдельно. Еще один подвох - интерполяция переменных в шаблонных строках без экранирования. После базовой проверки переходите к принудительному IPv4 или прокси-настройкам. Это решает 80% случаев.</p>
<p dir="auto"><strong>Пошаговое исправление:</strong></p>
<ol>
<li>Проверьте ping <code>hostname</code> в терминале - если не отвечает, проблема в DNS.</li>
<li>Используйте <code>family: 4</code> в options для принуждения IPv4:</li>
</ol>
<pre><code class="language-javascript">const options = {
  hostname: 'api.nasa.gov',
  port: 443,
  path: '/insight_weather/?api_key=your_key',
  family: 4  // Только IPv4
};
</code></pre>
<ol start="3">
<li>Для axios добавьте <code>dns: false</code> или используйте IP вместо домена.</li>
<li>Настройте прокси через <code>http_proxy</code> переменные окружения.</li>
</ol>
<p dir="auto">Если используете axios, проверьте Host header - он может вызывать повторный DNS-lookup.</p>
<h2>Решения для Postman и продвинутые случаи</h2>
<p dir="auto">В Postman ошибка ENOTFOUND появляется при импорте коллекций или прямых запросах к внутренним серверам. Часто это из-за системного прокси или VPN, который Postman не подхватывает автоматически. В корпоративной среде добавьте прокси в настройки Postman: File &gt; Settings &gt; Proxy.</p>
<p dir="auto">Продвинутые сценарии включают Docker-контейнеры, где DNS контейнера не видит внешние хосты. Укажите <code>--dns 8.8.8.8</code> при запуске или добавьте в docker-compose. В SendGrid или Firebase Functions проблема в конфигурации SMTP-хоста - используйте IP или проверьте config(). Для баз данных вроде MongoDB добавьте <code>useUnifiedTopology: true</code> и правильный connection string.</p>
<p dir="auto"><strong>Частые фиксы для специальных случаев:</strong></p>
<ul>
<li><strong>Docker</strong>: <code>docker run --dns=8.8.8.8 your-image</code>.</li>
<li><em>Postman с прокси</em>: Вклю System Proxy или укажите manual: <code>http://proxy:port</code>.</li>
<li><strong>Axios с Host header</strong>: Удалите или замените на IP: <code>headers: { host: '127.0.0.1' }</code>.</li>
<li><strong>Firebase/SendGrid</strong>: Проверьте <code>functions.config().sendgrid.key</code> и SMTP-хост.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Инструмент</th>
<th>Быстрое решение</th>
<th>Альтернатива</th>
</tr>
</thead>
<tbody>
<tr>
<td>Node.js</td>
<td>family: 4</td>
<td>Использовать IP</td>
</tr>
<tr>
<td>Postman</td>
<td>System Proxy</td>
<td>cURL в терминале</td>
</tr>
<tr>
<td>Docker</td>
<td>–dns 8.8.8.8</td>
<td>hosts файл</td>
</tr>
<tr>
<td>Axios</td>
<td>dns: false</td>
<td>node-fetch</td>
</tr>
</tbody>
</table>
<h2>Когда ошибка не уходит: отладка и альтернативы</h2>
<p dir="auto">Если стандартные шаги не помогли, запустите <code>nslookup hostname</code> для проверки DNS. В корпоративной сети обратитесь к сисадмину - возможно, домен в черном списке. Логируйте полный стек-трейс: <code>err.syscall</code>, <code>err.hostname</code>, <code>err.code</code> дают подсказки.</p>
<p dir="auto">Альтернативы getaddrinfo - библиотеки вроде <code>dns.promises</code> для ручного разрешения или <code>node-fetch</code> вместо https. В продакшене добавьте retry-логику с exponential backoff. Тестируйте на разных сетях, чтобы исключить локальные проблемы.</p>
<p dir="auto"><strong>Что проверить в крайнем случае:</strong></p>
<ul>
<li>resolv.conf файл в Linux/Mac.</li>
<li><em>Firewall правила</em>: <code>ufw status</code> или Windows Defender.</li>
<li>Перезапуск Node.js с <code>--trace-warnings</code>.</li>
</ul>
<h2>Сетевые запросы без неожиданных сбоев</h2>
<p dir="auto">Ошибка getaddrinfo ENOTFOUND учит осторожности с DNS в коде. Всегда тестируйте хосты заранее и имейте план B с IP-адресами. В Node.js и Postman комбинация family: 4, правильных options и прокси-режима закроет большинство дыр.</p>
<p dir="auto">Остается место для глубокого тюнинга: кастомные DNS-резолверы или моки для оффлайн-тестов. Подумать стоит о мониторинге сетевых метрик в продакшене, чтобы ловить такие сбои заранее.</p>
]]></description><link>https://forum.exlends.ru/topic/788/getaddrinfo-enotfound-chto-oznachaet-i-kak-ispravit-v-node.js-i-postman</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:52:34 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/788.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Feb 2026 12:03:18 GMT</pubDate><ttl>60</ttl></channel></rss>