Node.js 错误:使用节点v0.12.0时套接字挂起

Node.js 错误:使用节点v0.12.0时套接字挂起,node.js,Node.js,我正在尝试对节点执行一个非常简单的HTTP POST: var querystring = require('querystring'); var http = require('http'); var postData = querystring.stringify({ "source": "XXXX", "target": "XXXX", "create_target": true, "continuous": false }); var options = {

我正在尝试对节点执行一个非常简单的HTTP POST:

var querystring = require('querystring');
var http = require('http');

var postData = querystring.stringify({
  "source": "XXXX", 
  "target": "XXXX", 
  "create_target": true, 
  "continuous": false
});

var options = { 
  hostname: 'XXXX',
  port: 443,
  path: '/_replicate',
  method: 'POST',
  headers: { 
    'Content-Type:':'application/json',
    'Content-Length':Buffer.byteLength(postData)
  } 
};

var req = http.request(options, function(res) { 
  res.setEncoding('utf8');
  res.on('data', function (chunk) { 
    console.log('BODY: ' + chunk);
  });
});

req.on('error', function(e) { 
  console.log('problem with request: ' + e.stack);
});

req.write(postData);
req.end();
但我得到的回应是:

problem with request: Error: socket hang up
    at createHangUpError (_http_client.js:215:15)
    at Socket.socketOnEnd (_http_client.js:293:23)
    at Socket.emit (events.js:129:20)
    at _stream_readable.js:908:16
    at process._tickCallback (node.js:355:11)
我使用的是节点v0.12.0


我在Stackoverflow上看到了其他类似的问题,但我认为它们有所不同,因为:

  • -是发布非ascii字符的问题
  • -是发布到本地主机的问题
  • -似乎是在做推杆而不是POST
  • -未调用req.end()
  • -未对其POST数据进行字符串化
  • -似乎是早于v0.12.0的节点版本(基于问题日期)

    • 我看到您正在向安全服务器发出请求。您可能应该改用https对象的请求方法


      事实上,我能够使用http对象重新创建问题,当我简单地使用https对象时,我能够在不关闭套接字的情况下获得响应。

      查看
      createHangUpError()
      的node.js代码以及调用它时,它似乎是在另一端没有响应之前关闭套接字时调用的。