102

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

我在 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)

应用程序.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;
4

14 回答 14

56

每当您调用的服务器拒绝连接时,您很有可能正在为 node.js 死机而苦苦挣扎。尝试这个:

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

这使您的服务器保持运行,并为您提供一个附加调试器并寻找更深层次问题的地方。

于 2013-11-05T16:23:59.030 回答
11

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

heroku config:set NODE_ENV=production 

解决了!

检查服务器正在运行的配置和环境。

于 2014-02-23T05:09:29.083 回答
11

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

于 2013-03-23T11:38:27.253 回答
6

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

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

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

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

于 2016-02-26T19:22:04.623 回答
6

当您运行上面的代码时,您需要在端口 8080 上运行一个服务器,该代码只是通过响应返回请求。将下面的代码复制到一个单独的文件(比如“server.js”)并使用节点命令(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...');
于 2016-01-16T21:45:25.620 回答
5

如果您在 MEAN (Mongo-Express-AngularJS-Node) 堆栈上,请先运行 mongod,此错误消息将消失。

于 2016-05-17T14:29:45.640 回答
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.

于 2013-01-05T04:38:50.427 回答
1

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

mysql-ctl start

就我而言,它有效

于 2015-06-25T12:36:17.953 回答
1

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

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

于 2021-07-26T12:45:52.397 回答
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

于 2016-03-17T22:25:39.557 回答
0

有一个类似的问题,原来打印的监听端口与实际不同。请求字符串或侦听函数中的拼写错误可能会使目标服务器看起来不存在。

于 2020-10-14T16:26:02.057 回答
0

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

于 2019-06-11T05:50:21.700 回答
0

对我来说,这是图书馆中的一个问题,node-agent-base v4.x这是图书馆https-proxy-agent要求的newrelic v5.x

问题是,node-agent-base v4.x对于一些奇妙的想法决定修补核心 https.get 请求(您可以patch-core.js在 repo 的文件中看到这一点)。当我使用使用 https.get 的库时,它失败了,因为node-agent-base v4.x已经更改了函数签名,这给了我对 127.0.0.1 的请求,因为初始 url 丢失了......

我已经通过更新到没有此类“补丁”的newrelic 6.x下 一个版本来解决此问题。node-agent-base v4.x

这简直太疯狂了……希望我的回复能为您节省一些时间,我已经花了几天时间来调试它。

于 2022-01-31T11:15:54.093 回答
-1

检查 API 时,我在我的开发环境中使用 Postman 遇到了同样的问题。我从字面上搜索了所有答案都来自谷歌,但无济于事。

解决方案:我刚刚转向“失眠”(邮递员的替代品),它工作得很好。希望这种解决方法可能会有所帮助。

于 2021-11-24T13:48:42.767 回答