Node.js NodeJs错误:连接ETIMEDOUT

Node.js NodeJs错误:连接ETIMEDOUT,node.js,http,Node.js,Http,我运行包含下面代码的节点myserver.js,40-50秒后我得到错误(下面代码)。为什么在什么都没有发生的情况下我会出错 var options = { host: 'google.com', port: '80', path: '/', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Len

我运行包含下面代码的
节点myserver.js
,40-50秒后我得到错误(下面代码)。为什么在什么都没有发生的情况下我会出错

var options = {
    host: 'google.com',
    port: '80',
    path: '/',
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': 'post_data.length'
    }
 };

 var subscribeRequest = require('http').request(options, function(res) {
    console.log('send request');
 }).on('error', function(err){console.log(err.stack)});
40-50秒后,我得到这个错误:

Error: connect ETIMEDOUT
    at errnoException (net.js:904:11)
    at Object.afterConnect [as oncomplete] (net.js:895:19)

我认为至少有两件事不对:

  • 你没有结束你的请求。使用
    http.request()
    时,必须在发送完任何数据后对返回的请求对象调用
    .end()
    ,以便服务器知道没有更多数据
    http.get()
    自动为您调用
    .end()
    ,因为没有包含get请求的实体

  • 'Content-Length':'post\u data.Length'
    应该是
    'Content-Length':post\u data.Length


  • 声明请求后,必须调用
    subscribeRequest.end()
    !如果您不这样做,您的请求将永远不会被发送

    ,但我从未调用此函数?我不明白它什么时候着火,你说的第二点是对的。你能提供1的代码片段吗?假设你确实有
    post\u数据
    ,你就要做
    subscribeRequest.end(post\u数据)。这将发送您的表单数据并发出您的请求结束的信号。然后您应该会从服务器得到某种响应。@mscdex我正在使用express js和邮戳smtp服务执行日历事件,尽管我在上声明了res.end(),但收到的错误是{[error:connect-ETIMEDOUT 50.31.225.155:2525]代码:'ECONNECTION',错误号:'ETIMEDOUT',系统调用:'connect',地址:'50.31.225.155',端口:2525,命令:'CONN'}当服务器拒绝您的请求时也会发生这种情况。例如,如果您向服务器发出许多请求,它们可能会在一段时间后阻止您并导致此错误。