NodeJs错误:连接ETIMEDOUT

时间:2014-05-09 23:55:25

标签: node.js http

我运行包含下面代码的node 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)

2 个答案:

答案 0 :(得分:4)

我发现这里至少有两件事是错的:

  1. 您没有结束您的请求。当您使用http.request()时,必须在完成发送任何数据时返回的请求对象上调用.end(),以便服务器知道不再有数据到来。 http.get()会自动为您调用.end(),因为没有GET请求的正文。

  2. 'Content-Length': 'post_data.length'应为'Content-Length': post_data.length

答案 1 :(得分:0)

在宣布您的请求后,您必须致电subscribeRequest.end()!如果您不这样做,您的请求将永远不会被发送