2016-08-31 177 views
1

我正在一个小测试节点项目中运行以下内容。错误:连接ECONNREFUSED node.js https.get请求

var https = require('https'); 

var request = https.get('https://example.com/script.json', function(response){ 
    console.dir(response); 
}); 

request.on('error', function(){ 
    console.log(err); 
}); 

当我尝试console.dir响应时出现以下错误。

throw er; // Unhandles 'error' event 
Error: connect ECONNREFUSED xxx.xx.xxx.xx:xxx 

这是一个简单的获取对外部服务器上的json文件的请求。我知道该文件存在,所以我不知道为什么我会得到上述错误。该文件可以在浏览器中运行,不需要验证。

UPDATE:我编辑了代码。创造了一个承诺,并添加了一个.on('error'...来解决任何问题。

以下是目前输出:

([Error: connect ECONNREFUSED xxx.xx.xxx.xx:xxx] 
    code: 'ECONNREFUSED', 
    errno: 'ECONNREFUSED', 
    syscall: 'connect', 
    address: 'xxx.xxx.xxx.xxx', 
    port: 443) 
+1

你确定你的浏览器是不是为您服务缓存版本从连接到HTTPS代理服务器后面?您是否使用某种可防止“未授权”应用程序进行网络连接的防火墙? – robertklep

+0

@robertklep - 是的,我在一个代理。我有细节(端口等)。如你所说,这可能会导致问题。我已经有'npm config set proxy http'和'npm config set proxy https'设置了。但是这个错误是由什么引起的? – fidev

+1

如果您使用代理服务器,请查看['request'](https://github.com/request/request#proxies),这使得处理代理服务器变得更容易。 – robertklep

回答

1

感谢来自@robertklep帮我想出了以下解决方案,让我使用要求

const https = require('https'); 
const request = require('request'); 

request(
    { 
    'url':'https://https://example.com/script.json', 
    'proxy':'http://xx.xxx.xxx.xx' 
    }, 
    function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      console.log(body); 
     } 
    } 
); 
0

其他服务器不起来,或者让你得到一个连接被拒绝不听443端口。 另一种选择是,nodejs应用程序将解析该示例url不同于您的pc不同的ip。

+0

好吧,除了尝试另一个端口,我将如何解决您提出的第二个可能的问题。 – fidev

+0

在你的测试中使用直接ip,更新机器上的hosts文件,等等...... – sagie

+0

谢谢 - 但这对我来说并没有多大意义。刚刚开始与nodejs – fidev

相关问题