Как отследить ошибку в коде сети узла? - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь отследить причину сбоя моего кода с этой ошибкой:

 { Error: connect ECONNREFUSED 127.0.0.1:443
     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1082:14)
   errno: 'ECONNREFUSED',
   code: 'ECONNREFUSED',
   syscall: 'connect',
   address: '127.0.0.1',
   port: 443 }

, и трассировка стека для этой ошибки выглядит следующим образом:

 Error: connect ECONNREFUSED 127.0.0.1:443
     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1082:14)

Я делаюсетевое соединение, но я не пытаюсь подключиться к localhost.

Сетевой код, который я использую, прекрасно работает (и подключается к нужному хосту) в других контекстах.

Яиспользуя узел 11.6.0, предоставленный brew install, и похоже, что единственное вхождение строки "net.js" в структуре каталога brew "Cellar" находится в самом двоичном файле узла.Другими словами, даже после того, как

 brew install --build-from-source node

работает

 find /usr/local/Cellar/node/11.6.0 -type f | xargs fgrep -l net.js

находит только один файл: /usr/local/Cellar/node/11.6.0/bin/node и нет сети. * файлы в этом дереве каталогов.

Если это имеет значение, мой код, который, по-видимому, вызывает эту ошибку, выглядит следующим образом:

  const get_json_with_auth= async (channel, url) => {
    const parsed_url= URL.parse(url);
   return new Promise((good, fail) => {
     let request= require('https').get({
       hostname: parsed_url.hostname,
       path: parsed_url.path,
       headers: {
         Authorization: get_auth('GET', channel, url)
       }
     });
     console.log('url', url);
     request.on('response', response=> {
       const chunks= [];
       response.on('data', data=> chunks.push(data));
       response.on('end', ()=> good(JSON.parse(Buffer.concat(chunks).toString())));
     });
     request.on('error', err=> fail(err));
   });
 };

(я нахожусь на OSX high sierra здесь.)

Но, опять же, имя хоста в URL-адресе, который я использую, не преобразуется в localhost (и прекрасно работает в других контекстах).

Как изолировать проблему, подобную этой

1 Ответ

0 голосов
/ 18 января 2019

Выполнение моего кода с переменной среды NODE_DEBUG = 'net, tls, http, https' дало мне достаточно информации, чтобы распознать (и изолировать) проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...