我是节点新手并在一个简单的教程中遇到此错误。
我在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;
答案 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。