【问题标题】:UnhandledPromiseRejectionWarning: MongooseServerSelectionErrorUnhandledPromiseRejectionWarning: MongooseServerSelectionError
【发布时间】:2020-06-19 04:25:47
【问题描述】:

我正在学习这些教程,因为我想从 MongoDB 和 MERN 堆栈开始:

一切都很好,直到我与数据库的连接失败。 我检查了用户名/密码百万次,我复制并粘贴了原件,以防出现语法错误。这是错误:

(node:10156) UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connection <monitor> to 34.249.129.6:27017 closed
    at new MongooseServerSelectionError (C:\Users\Mario\Desktop\ReactProject\MongoDB\mern-tracker\node_modules\mongoose\lib\error\serverSelection.js:22:11)
    at NativeConnection.Connection.openUri (C:\Users\Mario\Desktop\ReactProject\MongoDB\mern-tracker\node_modules\mongoose\lib\connection.js:808:32)
    at Mongoose.connect (C:\Users\Mario\Desktop\ReactProject\MongoDB\mern-tracker\node_modules\mongoose\lib\index.js:333:15)
    at Object.<anonymous> (C:\Users\Mario\Desktop\ReactProject\MongoDB\mern-tracker\server\server.js:51:10)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
(node:10156) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:10156) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

这是我的 server.js:

const express = require("express");
const mongoose = require("mongoose");
require("dotenv").config();
const app = express();

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

app.use(cors());
app.use(express.json());

const uri = process.env.ATLAS_URI;



mongoose.connect(uri, {
  useNewUrlParser: true,
  useCreateIndex: true,
  useUnifiedTopology: true
});

const connection = mongoose.connection;
// connection.on("error", error => console.error(error));
connection.once("open", uri => {
  console.log("MongoDB database connections established");
});

const exercisesRoute = require("./routes/exercises");
const usersRoute = require("./routes/users");

app.use("./exercises", exercisesRoute);
app.use("./users", usersRoute);

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

由于错误是关于未处理的承诺,我还在猫鼬连接中尝试的是:

  mongoose
    .connect(uri, {
      useNewUrlParser: true,
      useCreateIndex: true,
      useUnifiedTopology: true
    })
    .catch(err => {
      console.log(Error, err.message);
    })
    .then(() => console.log("DB Connected!"))

这给了我下一个错误:

{ [Function: Error] stackTraceLimit: 16, prepareStackTrace: undefined } 'connection <monitor> to 52.212.0.151:27017 closed'
DB Connected!

还没有连接。

有时在错误中,connection &lt;monitor&gt; to 52.212.0.151:27017 closed' 更改为 34.249.129.6:27017

我尝试的另一件事是删除集群并创建一个新集群,但同样的事情发生了 我正在使用 windows 和节点 v10.16.3

希望你们能帮助我或给我建议。

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    我理解你的错误,因为我也遇到了它会尝试连接到 mongoDB。

    这个错误只是因为你的mongoDB本地服务器无法连接到远程服务器而弹出,可能是因为你没有正确关闭文件。

    如何解决:

    1. 转到 cmd 提示符并将 dir 更改为 mongo bin 文件,如下所示 (c:\program files\mongodb\server\4.2\bin)。
    2. 现在输入 mongo 并回车,您将看到错误无法连接到 mongodb 服务器。
    3. 现在转到任务管理器。
    4. 转到服务选项卡。
    5. 找到 mongodb 并选择它。
    6. 现在打开同一屏幕底部的打开服务选项卡。
    7. 再次搜索 mongodb 服务器并选择它。
    8. 现在点击绿色的播放按钮开始服务。

    就是这样,你的 mongodb 服务器又开始运行了。您可以通过键入相同的命令再次检查 cmd 提示符。

    【讨论】:

      【解决方案2】:

      试试这个 看来您正在使用 MongoDB atlas

      mongoose
           .connect( uri, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true })
           .then(() => console.log( 'Database Connected' ))
           .catch(err => console.log( err ));
      

      然后转到您的MongoDB Atlas -> NetworkAccess-> Edit-> 并添加Current IP address 它有效!!

      【讨论】:

      • 这行得通,现在我已连接到 Mongo。我遇到了另一个问题,就是我的 get 和我的 post 都不起作用
      • 阻止此 IP 更改.. 搜索问题数小时,您就是冠军。谢谢!
      【解决方案3】:

      试试这个

      mongoose.connect(uri, {
            useNewUrlParser: true,
            useCreateIndex: true,
            useUnifiedTopology: true
          }).then(res=>{
                  console.log("DB Connected!")
          }).catch(err => {
            console.log(Error, err.message);
          })
      

      【讨论】:

      • 还是得到第二个错误{ [Function: Error] stackTraceLimit: 16, prepareStackTrace: undefined } 'connection &lt;monitor&gt; to 52.212.0.151:27017 closed'
      • 不工作抛出此错误服务器正在端口 5000 上运行 { MongooseServerSelectionError: connection to 34.234.233.64:27017 close at NativeConnection.Connection.openUri (/home/krishnadevz/excercise/node_modules/mongoose /lib/connection.js:845:32) 在 _mongoose._promiseOrCallback.cb (/home/krishnadevz/excercise/node_modules/mongoose/lib/index.js:345:10) 在 Promise (/home/krishnadevz/excercise/node_modules /mongoose/lib/helpers/promiseOrCallback.js:31:5) 在新的 Promise () 在 promiseOrCallback (/home/krishnadevz/excercise/node_modules/mongoose
      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2021-04-15
      • 2020-06-10
      • 1970-01-01
      • 2020-01-02
      • 2018-11-05
      相关资源
      最近更新 更多