Node.js错误:连接ECONNREFUSED

时间:2013-01-05 03:59:01

标签: javascript node.js

我是节点新手并在一个简单的教程中遇到此错误。

我在OS X 10.8.2上尝试使用CodeRunner和终端。 我也尝试将我的模块放在node_modules文件夹中。

我可以说这是某种连接问题,但我不明白为什么?

events.js:71
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: connect ECONNREFUSED
    at errnoException (net.js:770:11)
    at Object.afterConnect [as oncomplete] (net.js:761:19)

app.js:

var makeRequest = require('./make_request');

makeRequest("Here's looking at you, kid");
makeRequest("Hello, this is dog");

make_request.js:

var http = require('http');

var makeRequest = function(message) {

    //var message = "Here's looking at you, kid.";
    var options = {
        host: 'localhost', port: 8080, path:'/', method: 'POST'
    }

    var request = http.request(options, function(response) {
        response.on('data', function(data) {
            console.log(data);
        });
    });
    request.write(message);
    request.end();
};

module.exports = makeRequest;

13 个答案:

答案 0 :(得分:39)

当你正在呼叫的服务器拒绝连接时,你很可能正在努力解决node.js的问题。试试这个:

process.on('uncaughtException', function (err) {
    console.log(err);
}); 

这可以使您的服务器保持运行,还可以为您提供附加调试器的位置,并寻找更深层次的问题。

答案 1 :(得分:9)

我和ghost和heroku有同样的问题。

heroku config:set NODE_ENV=production 

解决了!

检查您的配置并确认服务器正在运行。

答案 2 :(得分:8)

您正在尝试连接到localhost:8080 ...是您的localhost和此端口上运行的任何服务?如果不是,则拒绝连接,从而导致此错误。我建议先检查localhost上是否有运行:8080。

答案 3 :(得分:5)

当您运行上面的代码时,您需要在端口8080上运行服务器,该代码只是通过响应返回请求。将下面的代码复制到一个单独的文件(例如' server.js')并使用node命令(node server.js)启动此服务器。然后,您可以从单独的命令行单独运行上面的代码(node app.js)。

var http = require('http');

http.createServer(function(request, response){

    //The following code will print out the incoming request text
    request.pipe(response);

}).listen(8080, '127.0.0.1');

console.log('Listening on port 8080...');

答案 4 :(得分:4)

如果您的代码中存在任何数据库连接但您尚未启动数据库服务器,则有时可能会发生这种情况。

我的情况我有一些代码可以与mongodb连接

mongoose.connect("mongodb://localhost:27017/demoDb");

使用 mongod 命令启动mongodb服务器后,此错误消失了

答案 5 :(得分:2)

如果您使用的是MEAN(Mongo-Express-AngularJS-Node)堆栈,请首先运行mongod,此错误消息将消失。

答案 6 :(得分:1)

当Node.js进程仍在运行且又尝试再次启动服务器时,人们会遇到此错误。试试这个:

ps aux | grep node

这将打印出以下内容:

user    7668  4.3  1.0  42060 10708 pts/1    Sl+  20:36   0:00 node server
user    7749  0.0  0.0   4384   832 pts/8    S+   20:37   0:00 grep --color=auto node

在这种情况下,进程将是具有pid 7668的进程。要终止它并重新启动服务器,请运行kill -9 7668

答案 7 :(得分:1)

检查终端中启动mysql。使用以下命令

mysql-ctl start

就我而言,它有效

答案 8 :(得分:0)

Unhandled 'error' event指的是没有为传递错误的请求提供函数。如果没有此事件,节点进程将以错误结束,而不是正常失败并提供实际反馈。您可以在request.write行之前设置事件以捕获任何问题:

request.on('error', function(err)
{
    console.log(err);
});

以下更多示例:

https://nodejs.org/api/http.html#http_http_request_options_callback

答案 9 :(得分:0)

在localhost中发生相同的错误,我只是更改了mysql端口(将8080更改为localhost mysql端口5506)。它对我有用。

答案 10 :(得分:0)

从不同的命令行运行server.js,从不同的命令行运行client.js

答案 11 :(得分:0)

有一个类似的问题,事实证明打印的侦听端口与实际端口不同。请求字符串或侦听功能中的错别字可能会使目标服务器似乎不存在。

答案 12 :(得分:0)

ECONNREFUSED 错误表示无法与目标服务建立连接(在您的情况下为 localhost:8080)。检查在端口 8080 上运行的服务。

要了解有关 node.js 错误的更多信息,请参阅此 doc