nodejs httprequest с данными – получение ошибки getaddrinfo ENOENT

Обновление – ответили самим

Я вижу, что нужно убедиться, что DNS правильно разрешен с компьютера, проверьте документацию узла, чтобы убедиться, что домен разрешима.

Оригинальный вопрос

Я пишу программу на основе узлов, в которой пользователь может попросить меня сделать httprequest от их имени {с курса они предоставляют мне некоторые данные и метод для вызова с}, но каждый раз, когда я делаю httprquest, он дает мне ошибку

getaddrinfo ENOENT это то, как выглядит мой код

function makehttprequest(deviceid, httpaction, httppath,methods, actiondata, callback) { console.log('we are here with httpaction' + httpaction + ' path ' + httppath + ' method ' + methods + ' action data ' + actiondata); //do the http post work, get the data, and call the callback function with return data var options = { host: httpaction, port: 80, path: httppath, method: methods }; try { var req = http.request(options, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); } catch(e) { console.log('error as : ' + e.message); } req.on('error', function(e) { console.log('problem with request: ' + e.message); }); // write data to request body console.log('writing data to request ..'); req.write(actiondata); console.log('finished writing data to request…'); req.end(); console.log('request ended…'); } 

Я видел это, когда ваш хост (который вы передаете как httpact) имеет схему (так «http: //») перед ней. Ваш хост должен быть строго таким доменом, как «www.google.com», а не « http://www.google.com » или «www.google.com/hello-world» или « http://www.google.com / hello-world “.

Храните его только в домене.

Вот пример: http://allampersandall.blogspot.com/2012/03/nodejs-http-request-example.html

Проблема может также произойти, если у вас есть конечная косая черта:

Хорошо: "www.google.com"

Плохо: "www.google.com/"

Избегайте всех этих проблем с именем хоста / протокола / порта / слэша, используя модуль request вместо http

https://github.com/mikeal/request

Я получал [Error: Getaddrinfo ENOENT], но это было сразу после получения [Error: connect EMFILE]; поскольку я выполняю тесты нагрузки с тысячами клиентов, ошибка EMFILE (основная причина) была непрозрачной. Решение было таким же, как и для EMFILE : увеличить количество дескрипторов файлов. Просто добавьте его здесь для полноты, если у кого-то другая проблема.

Я ударил это снова сегодня за глупую ошибку. Это было потому, что номер порта был помещен как часть имени хоста.

 // wrong. gets error getaddrinfo ENOENT var options = { hostName: 'localhost:1337', .... } // correct var options = { hostname: 'localhost', port: 1337, }; 

Я получал эту ошибку при вызове server.listen(PORT, HOST); где HOST не может быть разрешено обратно на локальную машину.

Как только я изменил это на имя хоста / доменное имя / ip, с которым разрешен локальный компьютер, эта ошибка исчезла.

Поскольку я пытался подключиться через имя хоста для целей dev, я добавил запись в файл моих хостов с требуемым именем хоста и обеспечил соответствие этого имени server.listen()

Если весь ваш код выглядит нормально, и вы по-прежнему получаете ту же ошибку, что и было моим решением, решение проверяло серверы имен в файле /etc/resolv.conf .

Я добавил сервер имен Google в начале моего файла resolv.conf (8.8.8.8), и этот код снова начал работать отлично, а не больше ошибок.

Стоит заметить, что эта ошибка возникла у меня 4 февраля 2015 года после того, как я запустил sudo apt-get upgrade , мой узел js, должно быть, был обновлен, и появилась ошибка, которая казалась несовместимой с серверами имен, которые у меня были.

Сначала я проверил, были ли у меня проблемы с DNS, извлекая URL-адрес, который мне нужен, используя wget в командной строке, я получил содержимое целевого URL-адреса, поэтому я не думал, что это проблема DNS, но это было так.

У меня была аналогичная проблема, но я работал как функция AWS Lambda, поэтому, если кто-то сталкивается с этой проблемой с функциями Lambda, я решил ее решить.

  • Дайте вашей lambda-функции VPC.
  • Выберите не менее 2 подсетей.
  • Выберите группу безопасности.

Я провел день, пока не нашел это исправление, надеюсь, что это поможет кому-то другому.

  • Первое развертывание Heroku не выполнено «код ошибки = H10»
  • nodejs требуется внутри файла TypeScript
  • выполнение действия очистки непосредственно перед выходом node.js
  • Облачные функции для Firebase - getaddrinfo ENOTFOUND
  • Как я могу использовать прокси-сервер http с node.js http.Client?
  • Есть ли способ получить версию из package.json в коде nodejs?
  • Как заполнить субдокумент в мангусте после его создания?
  • Удаление сопоставлений маршрутов в NodeJS Express
  • Использование npm за корпоративным прокси .pac
  • Как вызвать функцию Python из Node.js
  • абсолютный путь res.sendFile
  • Interesting Posts

    ОШИБКА: разрешение отклонено для отношения tablename на Postgres при попытке SELECT как пользователя, использующего только для чтения

    Отключить сообщения при загрузке пакета

    Разница между литералами NSString

    Как определить, сколько оперативной памяти мне нужно?

    Как полностью удалить поле из документа MongoDB?

    iPhone: скрыть панель поиска UITableView по умолчанию

    Положите разрыв в Y-оси гистограммы

    Получение 403 запрещенной ошибки при использовании широты и долготы: геокодирование

    Как получить std :: векторный указатель на необработанные данные?

    как изменить цвет текста индикатора вкладок в android?

    В Java, когда я должен создать проверенное исключение и когда это должно быть исключение во время выполнения?

    CSS Div растягивает 100% высоты страницы

    jQuery.post () .done () и успех:

    Является ли моя сетевая инфраструктура видимой вне моего беспроводного маршрутизатора?

    Является ли это правильным способом использования Java 2D Graphics API?

    Давайте будем гением компьютера.