【问题标题】:connect ECONNREFUSED 127.0.0.1:27017'连接 ECONNREFUSED 127.0.0.1:27017'
【发布时间】:2016-04-04 10:32:18
【问题描述】:

我有那个代码:

var express = require('express'),
    stylus = require('stylus'),
    logger = require('morgan'),
    bodyParser = require('body-parser'),
    mongoose = require('mongoose');

var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development';

var app = express();

function compile(str, path){
    return stylus(str).set('filename', path);
}

app.set('views', __dirname + '/server/views');
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(stylus.middleware(
        {
            src: __dirname + '/public',
            compile: compile
        }
    ));
app.use(express.static(__dirname + '/public'));

mongoose.connect('mongodb://localhost/multivision');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error..'));
db.once('open', function callback(){
    console.log('multivision db opened');
});

app.get('/partials/:partialPath', function(req, res){
    res.render('partials/' + req.params.partialPath);
});

app.get('*', function(req, res) {
  res.render('index');
});

var port = 3131;
app.listen(port);
console.log('Listening on port ' + port + '...');

但是当我尝试nodemon server.js 时,它会抛出一个错误:

连接错误.. { [MongoError: 连接 ECONNREFUSED 127.0.0.1:27017] 名称:“MongoError”消息:“连接 ECONNREFUSED 127.0.0.1:27017”}

我该如何改进呢?我已经在我的目录中使用npm install mongoose --save 安装了猫鼬

是的,有很多这样的问题,但没有一个对我有帮助。我是 nodejs 的新手,可能遗漏了一些东西

【问题讨论】:

标签: node.js mongodb


【解决方案1】:

运行 services.msc 并激活 Mongodb 服务。

现在 Mongodb 将连接

Mongodb 的状态显示为 Running

【讨论】:

    【解决方案2】:

    当我在我的项目目录上执行node server 时,我也遇到了同样的问题。对我来说,MongoDB 服务没有启动,这就是这个问题。

    所以我必须运行services.msc 并激活服务。

    之后我就可以运行我的命令了。

    D:\SVenu\MyApp>node server
    Saving User
    App is listening on port: 3000
    Already Exist
    Already Exist
    Already Exist
    Already Exist
    Done save
    

    【讨论】:

      【解决方案3】:

      您的 mongodb 服务可能已关闭。 运行sudo service mongod start启动守护进程

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,发现这是一个 mongod 问题。(我运行的是 Ubuntu 16.04)。查看错误有一个目录丢失。添加目录后,我需要更改权限,最后将mongod服务设置为开机启动。

        $ sudo mkdir -p /data/db
        $ sudo chown -R $USER /data/db
        $ sudo systemctl enable mongod.service
        

        【讨论】:

        • 我在自定义 Docker 容器中遇到了这个问题,在添加 chown -R $USER /data/db 后它起作用了!谢谢!
        【解决方案5】:

        我知道这个问题很老,但我遇到了类似的问题,上述解决方案对我不起作用,我使用的是 Ubuntu 20.04 LTS。

        我所做的只是使用这个命令运行 mongo 服务:

        $ mongod
        

        然后一切正常

        【讨论】:

          【解决方案6】:

          如果您在 Windows 中遇到此问题, 只需转到 mongodb 的安装程序 exe 应用程序 然后点击“修复” 这对我有用

          【讨论】:

            【解决方案7】:

            试试这个:

            mongod.exe --dbpath c:\data\db

            c:\data\db 是您放置数据库的地方。

            当你看到这样的事情时:

            2016-08-18T10:22:31.020+0800 I CONTROL  [main] Hotfix KB2731284 or later update is not installed, will zero-out data files
            2016-08-18T10:22:31.022+0800 I CONTROL  [initandlisten] MongoDB starting : pid=4356 port=27017 dbpath=c:\data\db 64-bit host=sevencai-PC0
            2016-08-18T10:22:31.022+0800 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
            2016-08-18T10:22:31.023+0800 I CONTROL  [initandlisten] db version v3.2.8
            2016-08-18T10:22:31.023+0800 I CONTROL  [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
            

            ......

            然后节点 yourserver.js

            也许一切都会好起来的!

            【讨论】:

              【解决方案8】:

              如下:

              => 运行 services.msc 并启动 mondodb 服务器

              将文件保存到node项目中,就可以看到服务器连接上了!!

              【讨论】:

              【解决方案9】:

              在大多数情况下,您将收到错误 bcz 服务 MongoDB 数据库服务器 (MongoDB) 可能已停止。

              只需启动服务即可连接DB

              【讨论】:

                【解决方案10】:

                它不像 localhost 那样工作,但 IP 地址工作 127.0.0.1 并解决了这个问题:

                  // .connect("mongodb://localhost:27017/lofydb")
                
                    const mongoose = require("mongoose");
                
                    mongoose.connect("mongodb://127.0.0.1:27017/lofydb")
                      // .connect("mongodb://127.0.0.1:27017")
                    
                      .then(() => {
                        console.log("Connected to Database");
                      })
                      .catch((err) => {
                        console.log("Not Connected to Database ERROR! ", err);
                      });
                

                【讨论】:

                  【解决方案11】:
                  1. 请检查 MongoDB 服务是否处于活动状态并正在运行。 Refer the running services

                  2. 如果它在 MongoDB compass 或 MongoDB shell 上运行并且可用,并且如果您正在使用节点版本 >17.0.0 或这样它会给出错误。 所以请换成稳定版的node。

                  【讨论】: