在q-io / http.request上进行ETIMEDOUT

使用q-io / http拉入网页失败。 我想我一定会错过一些明显的东西 – 因为这是我认为是一个非常直接的例子。

编辑:Windows 8,节点11.13

var http = require('q-io/http') var url = 'http://www.google.com' ; http.request({ method: 'GET', uri: url }). then(function (response) { console.log(response) }). fail(function (err) { console.error(err) }); 

这是输出:

 { state: 'pending' } > { [Error: connect ETIMEDOUT] stack: 'Error: connect ETIMEDOUT\n at exports._errnoException (util.js:742:11)\n at Object.afterConnect [as oncomplete] (net.js:989:19)', code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect' } 

这与复制品略有不同。 q-io / http将在您读取正文后closures请求。 阅读身体在这里看起来很重要。

把代码改成这样:

 var http = require('q-io/http') var url = 'http://www.google.com' ; results = qHttp.request({ url: url }).then(function(res){ return res.body.read().then(function(bodyStream){ var body = bodyStream.toString('UTF-8') return body }) }) 

访问响应主体看起来是为了解决这个问题,我的假设是stream在q-io / http(包装Node / http库)的范围内被closures。 我花了一些时间跟踪代码 – 但无法find.end()的确切path