MongoDB 无法连接到服务器

Posted

技术标签:

【中文标题】MongoDB 无法连接到服务器【英文标题】:MongoDB can't connect to Server 【发布时间】:2019-03-02 19:26:51 【问题描述】:

编辑:我尝试了几个不同的端口,杀死了端口上的任务并再次尝试,它不起作用。

今天我开始了关于 MERN 堆栈的教程,但我无法连接到服务器。 使用 npm run server 时出现以下错误: Error Message

我安装了推荐版本的node,使用npm i安装了express、mongoose、body-parser、concurrently和nodemon。 我按照教程的每个步骤进行操作,但无法正常工作。

这些是我的文件:

server.js

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');


const app = express();

// Bodyparser Middleware
app.use(bodyParser.json());

// DB Config
const db = require('./config/keys').mongoURI;

// Connect to Mongo
mongoose
  .connect(db, useNewUrlParser: true) // Adding new mongo url parser
  .then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err));

const port = process.env.PORT || 5000;

app.listen(port, () => console.log(`Server started on port $port`));

package.json


  "name": "mern_shopping_list",
  "version": "1.0.0",
  "description": "Shopping list built with the MERN stack",
  "main": "server.js",
  "scripts": 
    "start": "node server.js",
    "server": "nodemon server.js"
  ,
  "author": "Mario Hess",
  "license": "ISC",
  "dependencies": 
    "body-parser": "^1.18.3",
    "concurrently": "^4.0.1",
    "express": "^4.16.3",
    "mongoose": "^5.2.17"
  ,
  "devDependencies": 
    "nodemon": "^1.18.4"
  

keys.js(是的,我编辑了 MYNAME 和 PASSWORD!)

module.exports = 
    mongoURI:'mongodb://<MYNAME>:<MYPASSWORD>@ds115193.mlab.com:15193/servasdu'

【问题讨论】:

该错误告诉您端口 5000 已在使用中。尝试更改端口,看看它是否工作,如果它确实检查是否有节点的任何悬空进程或在该端口上运行的任何其他软件。 我尝试了几个不同的端口! 嘿,伙计,我认为你在使用 nodemon 时遇到了问题。只需尝试使用节点运行。试试 npm start。 我尝试用 node 运行,npm start。同样的问题! 【参考方案1】:

试试这个:

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

const app = express();

// Bodyparser Middleware
app.use(bodyParser.json());

// DB Config
// const db = require('./config/keys').mongoURI;
const db = 'mongodb://mario:M010101@ds115963.mlab.com:15963/stack2709';
// Connect to Mongo
mongoose
  .connect(
    db,
     useNewUrlParser: true 
  ) // Adding new mongo url parser
  .then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err));

const port = process.env.PORT || 5000;

app.listen(port, () => console.log(`Server started on port $port`));

我已经为你制作了这个数据库。正如您在此处看到的,一切都很好。

希望我的回答有帮助!

【讨论】:

【参考方案2】:

错误说,另一个任务当前正在使用端口 5000。然后,解决方案很简单,将端口更改为其他端口。例如:

const port = process.env.PORT || 5050;

这是另一种选择。如果您使用的是 Windows 操作系统,请尝试以下操作:

在你的命令行中:

netstat -aon | findstr :5000

你会得到这样的东西:

然后:

taskkill /pid xxxxx /f

xxxxx 需要替换为右侧的process IDs。大多数时候,最前面的pid是我们需要的。

这样,你将终止当前占用5000端口的任务。

【讨论】:

我刚刚给你做了另一个答案

以上是关于MongoDB 无法连接到服务器的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 与 Docker “首次连接时无法连接到服务器 [localhost:27017]”

MongoDB 与 Docker “首次连接时无法连接到服务器 [localhost:27017]”

无法使用 MEAN 堆栈连接到 Mongodb.atlas 集群

为啥 MongoDB 无法连接到我的 NodeJS 应用程序?

在 Ubuntu 20.04 上无法连接到 mongodb,连接被拒绝

MongoError:在 mongoDB atlas 中首次连接时无法连接服务