web-dev-qa-db-ja.com

UnhandledPromiseRejectionWarning:MongooseServerSelectionError

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 <monitor> to 52.212.0.151:27017 closed'34.249.129.6:27017に変わります

私が試したもう1つのことは、クラスターを削除して新しいクラスターを作成することでしたが、Windowsとノードv10.16.3を使用しても同じことが起こります

皆さんが私を助けてくれるか、私に助言してくれることを願っています。

4
Mario Garcia

また、mongoDBに接続しようとすると、エラーが発生することも理解しました。

MongoDBローカルサーバーがリモートサーバーに接続できなかったのは、おそらくファイルが正しくシャットダウンされなかったためです。

直し方:

  1. Cmdプロンプトに移動し、dirを次のようにmongo binファイルに変更します(c:\program files\mongodb\server\4.2\bin)。
  2. Mongoと入力してEnterキーを押すと、mongodbサーバーに接続できないというエラーが表示されます。
  3. タスクマネージャーに移動します。
  4. [サービス]タブに移動します。
  5. Mongodbを見つけて選択します。
  6. 次に、同じ画面の下部にある開いているサービスのタブを開きます。
  7. もう一度mongodbサーバーを検索して選択します。
  8. 緑色の再生ボタンをクリックして、「サービスを開始」と言ってください。

それだけです。mongodbサーバーが再び実行されています。同じコマンドを入力して、cmdプロンプトでもう一度確認できます。

0
Amit263