节点Js问题:getaddrinfo ENOTFOUND

时间:2018-01-16 07:11:14

标签: node.js npm proxy

我正在编写一个节点应用程序来向外部URL发出https请求。我是公司代理的背后,我已经设置了

>npm config set proxy http://proxy.sample.example.org:8080
>npm config set https-proxy http://proxy.sample.example.org:8080

我可以毫无问题地下载节点依赖项。但是,当我尝试点击外部URL时,会引发以下错误。

    { Error: getaddrinfo ENOTFOUND example.net example.net:443
    at errnoException (dns.js:28:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
    code: 'ENOTFOUND',
    errno: 'ENOTFOUND',
    syscall: 'getaddrinfo',
    hostname: 'example.net',
    host: 'example.net',
    port: 443 }

这同样适用于google.com。代码如下。

var request = require('request');
request.get(   
    {
    url : connUrl,//This is set to be https://example.net
    },function (error, response, body) {
       //Print response code
        console.log(body);
        console.log(error);
      });

有人可以建议我出错的地方

2 个答案:

答案 0 :(得分:0)

对于Requests模块,您可以使用proxy选项设置代理。 试试这样的事情,

request.get({
      proxy: "proxy",
      url : connUrl,//This is set to be https://example.net
    },function (error, response, body) {
       //Print response code
        console.log(body);
        console.log(error);
});

或者,您也可以设置http_proxy和/或https_proxy环境变量。

答案 1 :(得分:0)

使用用户名和密码设置npm代理。 在此方案中安全地将密码设置为字母数字 (在大多数企业环境中使用用户名和密码设置代理)

npm config set proxy http://username:password@10.81.82.100:80
npm config set https-proxy https://username:password@10.81.82.100:80

设置没有用户名和密码的npm代理

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

添加回答@Malice,使用环境变量设置临时代理

set http_proxy=http://username:password@10.81.82.100:80
set https_proxy=https://username:password@10.81.82.100:80