2

我想知道为什么这么简单的http请求不起作用......

http = require("http")

url = "http://nodejs.org/"

console.log "Try a request to #{url}..."
reqHttp = http.request url, (response) ->

    console.log "Request to #{url}"
    response.on 'data', (chunk) -> console.log "chunk: ", chunk 

reqHttp.on 'error', (error) -> console.log "reqHttp error", error

大约一分钟后,它返回:

reqHttp error { [Error: socket hang up] code: 'ECONNRESET' }

为了确保它在我的环境中不是问题,我尝试了该request模块并且工作得很好:

request = require("request")

url = "http://nodejs.org/"

request url, (error, response, body) ->
  console.log body if not error and response.statusCode is 200

看来我不是唯一一个

所以,我有一个解决我的问题的方法(使用request模块),但我想知道为什么我不能使用内置的 http 请求。它是错误的还是不可靠的?(Node.js 版本 0.8.21)

4

1 回答 1

7

好的,这真的很简单。您正在构建一个http request但尚未完成发送它。从你给自己的链接:

req.write('data\n');   //Write some data into request
req.write('data\n');
req.end();             //Finish sending request let request go. Please do this

由于您从未使用过 req.end(),因此它挂起,因为它从未完成。节点重置非活动请求

reqHttp error { [Error: socket hang up] code: 'ECONNRESET' }
于 2013-03-04T15:50:09.087 回答