繁体   English   中英

Mac:Node JS Mongo 数据库错误:连接被拒绝

[英]Mac: Node JS Mongo Database Error: Connection Refused

我正在关注此处找到的教程。 但是我收到以下错误:

Unable to connect to the mongoDB server. Error: { [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
name: 'MongoError',
message: 'connect ECONNREFUSED 127.0.0.1:27017' }

我已使用此处找到的命令进行了验证,该命令返回 1:

ps -ef | grep mongod | grep -v grep | wc -l | tr -d ' '

我也跑了

ps -ef | grep mongod

并收到以下信息:

0  4165   418   0 Fri12pm ttys000    0:00.03 sudo mongod
501  6165   418   0  9:54am ttys000    0:00.00 grep mongod

我试图运行的 javascript 文件如下:

var fs = require('fs');
var http = require("https");
var express = require('express');
var app = express();
var path = require('path');
var http = require("http");
var url = require("url");
var req = require('request')
var pem = require('pem');
var cors = require("cors");
var mongodb = require('mongodb').MongoClient;
var url = 'mongodb://127.0.0.1:27017/Rewards';

// Use connect method to connect to the Server
mongodb.connect(url, function (err, db) { 
if (err) {
  console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
  //HURRAY!! We are connected. :)
  console.log('Connection established to', url);

  // do some work here with the database.

  //Close connection
  db.close();
  }
});

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,  Content-Type, Accept");
  next();
});

app.use(express.static(path.join(__dirname, '../')));
app.listen(process.env.PORT || 8080);
app.options('*', cors()); 

app.all('/*', function (req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost:8080");
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
  next();
});

app.get('/', function (req, res) { 
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
  res.writeHead(200, {'Content-Type': 'text/plain'});
  contents = fs.readFileSync("sliderImages.json", "utf8");
  console.log(path.join(__dirname, '/sliderImages.json'));
 res.end(contents);

});

我尝试过的事情:

  1. 重启服务
  2. 将端口号从 27017 更改为其他
  3. 取出代码以便验证
  4. 这个链接信息
  5. 这个链接信息
  6. 这个链接信息

我是 Node JS 和 Mongo DB 的新手,所以尝试调试这有点困难。 我在 StackOverflow 内外都尝试了其他相关帖子中的许多内容,但似乎无法弄清楚为什么我会收到此错误。

当我阅读 Mongo DB 需要它们时,我确实安装了以下内容:

  1. mongodb-核心
  2. 布森
  3. kerberos
  4. 节点-gyp

也 :

  1. 猫鼬
  2. 蒙戈
  3. 节点

我正在发布我的代码; 也许一个更了解这些的更好的开发人员可以向我解释到底发生了什么以及为什么会出现这个问题。 我从一个来源中读到,我找不到可能发生这种情况的链接,这是因为一些关键问题,例如未关闭数据库连接、没有数据库、Mongo 未运行以及其他一些问题。

进入蒙古:

2016-05-31T11:18:44.936-0400 I CONTROL  [initandlisten] MongoDB starting : pid=10385 port=27017 dbpath=/data/db 64-bit host=RBCs-MacBook-    Pro-3.local
2016-05-31T11:18:44.936-0400 I CONTROL  [initandlisten] db version v3.2.6
2016-05-31T11:18:44.936-0400 I CONTROL  [initandlisten] git version: 05552b562c7a0b3143a729aaa0838e558dc49b25
2016-05-31T11:18:44.937-0400 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2h  3 May 2016
2016-05-31T11:18:44.937-0400 I CONTROL  [initandlisten] allocator: system
2016-05-31T11:18:44.937-0400 I CONTROL  [initandlisten] modules: none
2016-05-31T11:18:44.937-0400 I CONTROL  [initandlisten] build environment:
2016-05-31T11:18:44.937-0400 I CONTROL  [initandlisten]     distarch: x86_64
2016-05-31T11:18:44.937-0400 I CONTROL  [initandlisten]     target_arch: x86_64
2016-05-31T11:18:44.937-0400 I CONTROL  [initandlisten] options: {}
2016-05-31T11:18:44.937-0400 I -        [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting  the active storage engine to 'wiredTiger'.
2016-05-31T11:18:44.937-0400 W -        [initandlisten] Detected unclean shutdown - /data/db/mongod.lock is not empty.
2016-05-31T11:18:44.937-0400 I STORAGE  [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /data/db/mongod.lock   errno:13 Permission denied Is a mongod instance already running?,  terminating
2016-05-31T11:18:44.937-0400 I CONTROL  [initandlisten] dbexit:  rc: 100

您对 NPM 上可用的 Mongodb 驱动程序和可以在 mongodb.com 上安装的 Mongodb 服务感到有些困惑

您在他们的网站上安装的 mongodb 服务用于创建一个 mongodb 实例,该实例将实际保留和存储您的数据记录。 如果您有 RDBMS 的背景,它与拥有 localdb/expressdb 是一样的。

通过 brew 包管理器安装他们提供的 mongodb 服务 - 类似于 NPM,但支持不同的库。 首先安装 brew,然后按照 Mongodb 网站上的说明进行操作,那里有一个位于http://brew.sh/的链接。

一旦安装了 MongoDB 实例并设置了路径变量,您就可以在打开任何终端窗口后运行 mongodb 命令和 mongo 命令。

这将启动您的 mongodb 服务

brew services start mongodb

这将结束您的 mongodb 服务

brew services end mongodb

您从 NPM 安装的 mongodb 只是一个公共 api/驱动程序,它允许您与您安装的服务进行交互。 在连接到节点项目时,您必须打开一个运行 mongodb 的终端。

注意:(关于您已安装的软件包。)如果您使用 mongodb,则不需要 mongoose - mongoose 构建在 mongodb 之上,它强制执行模式内容并且体积更大。 我建议先坚持使用 mongodb,然后再添加另一层来学习。

使用优胜美地 10.10.5

我有同样的问题,我以这种方式解决了。

  • 首先卸载任何 mongodb 版本......阅读文档我安装了当前的 mongodb 版本(4.2),这在 YOSEMITE 中不受支持;
  • 安装 3.6 版

brew install mongodb-community@3.6

  • 一旦安装结束它说:启动mongodb“brew services start mongodb/brew/mongodb-community@3.6”所以使用这个命令来启动mongo

最后 mongodb 启动并从 node.js 连接它工作了!

在终端中键入此命令:

mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM