Node.js 错误:连接 ECONNREFUSED

IT技术 javascript node.js
2021-02-19 05:42:20

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

我在 OS X 10.8.2 上从 CodeRunner 和终端尝试这个。我也试过把我的module放在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;
6个回答

每当您调用的服务器拒绝连接时,您就有可能在 node.js 死掉的情况下苦苦挣扎。试试这个:

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

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

一般来说,在黑暗中捕获所有异常并不是一个好主意。看看这个答案
2021-04-22 05:42:20
这取决于您要实现的目标。我正在编写一个监控应用程序,在该应用程序中,跟上并继续前进至关重要。似乎 OP 正在努力找出问题所在。所有其他答案都是关于可能导致此错误的特定问题。作为调试步骤,在您深入到真正的问题之前,上述步骤几乎总是必要的。我也很奇怪,您的服务器因一次故障而死亡,导致所有其他客户端调用开始失败,这对我来说还可以吗?
2021-04-23 05:42:20
在未捕获的异常之后保持服务器运行是一件危险的事情。您不知道异常是否使您的服务器处于预期状态。杀死服务器并让另一个进程重新启动它(并记录异常,显然)要安全得多。
2021-05-06 05:42:20

我在使用 ghost 和 heroku 时遇到了同样的问题。

heroku config:set NODE_ENV=production 

解决了!

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

你能解释为什么这可以解决这个问题吗?
2021-04-21 05:42:20
我使用了heroku config:set NPM_CONFIG_PRODUCTION=false。我想知道它是如何工作的
2021-05-02 05:42:20

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

当您运行上面的代码时,您需要在端口 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...');

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

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

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

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