17 votes

Erreur de connexion à MongoDB : MongoTimeoutError : La sélection du serveur a expiré après 30000 ms

J'essaie de créer une application fullstack en lisant le tutoriel suivant :

https://medium.com/javascript-in-plain-english/full-stack-mongodb-react-node-js-express-js-in-one-simple-app-6cc8ed6de274

J'ai suivi toutes les étapes et j'ai essayé de m'exécuter :

node server.js

Mais j'ai obtenu l'erreur suivante :

Erreur de connexion à MongoDB : MongoTimeoutError : La sélection du serveur a expiré après 30000 ms at Timeout._onTimeout ( C:\RND\fullstack_app\backend\node_modules\mongodb\lib\core\sdam\server_selection.js :308:9) at listOnTimeout (internal/timers.js:531:17) at processTimers (internal/timers.js:475:7) { name : 'MongoTimeoutError', reason : Error : connect ETIMEDOUT 99.80.11.208:27017 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1128:14) {nom : 'MongoNetworkError'. name : 'MongoNetworkError', [Symbole(mongoErrorContextSymbol)] : {} }, [Symbole(mongoErrorContextSymbol)] : {} } (node:42892) UnhandledPromiseRejectionWarning : MongoTimeoutError : La sélection du serveur a expiré après 30000 ms at Timeout._onTimeout ( C:\RND\fullstack_app\backend\node_modules\mongodb\lib\core\sdam\server_selection.js :308:9) at listOnTimeout (internal/timers.js:531:17) at processTimers (internal/timers.js:475:7)

Mon code dans server.js est le suivant :

const mongoose = require('mongoose');
const router = express.Router();

// this is our MongoDB database
const dbRoute =
    'mongodb+srv://user:<password>@cluster0-3zrv8.mongodb.net/test?retryWrites=true&w=majority';

mongoose.Promise = global.Promise;

// connects our back end code with the database
mongoose.connect(dbRoute, 
    {   useNewUrlParser: true,
        useUnifiedTopology: true
    });

let db = mongoose.connection;

db.once('open', () => console.log('connected to the database'));

Des suggestions ?

29voto

Kunal Usapkar Points 291

Il suffit d'aller dans le panneau d'administration de mongodb atlas et d'aller dans l'onglet sécurité>Accès réseau> Puis de mettre votre IP sur la liste blanche en l'ajoutant.

Voir cette image pour localiser le menu particulier

Note:Vérifiez votre IP sur Google puis ajoutez-la.

6voto

Smartniggs Points 85

Assurez-vous que les "<" et ">" sont supprimés lorsque vous remplacez les champs de l'utilisateur et du mot de passe. Cela a fonctionné pour moi

6voto

J'ai eu la même erreur. Voici les étapes que j'ai suivies pour le résoudre

  1. Connectez-vous à votre compte Mongo Atlas
  2. Allez à la onglet sécurité -> Accès réseau -> Ensuite, mettez votre IP sur une liste blanche
  3. Ensuite, allez à la onglet sécurité -> Accès aux bases de données -> et supprimer votre utilisateur actuel.
  4. Créez un nouvel utilisateur en fournissant un nouveau nom d'utilisateur et un nouveau mot de passe.
  5. Fournissez ce nom d'utilisateur et ce mot de passe nouvellement créés dans le champ .env ou mangouste.connect méthode

Après ces étapes, tout a fonctionné comme d'habitude. J'espère que cela vous aidera.

6voto

Parfois, cette erreur est due à l'adresse IP qui donne accès à notre base de données.

Il se peut que votre application fonctionne bien et qu'une telle erreur apparaisse. Lorsque cela se produit, la plupart du temps votre adresse IP a changé, ce qui n'est pas sur la liste blanche des adresses autorisées.

Tout ce que vous avez à faire est de mettre à jour la liste blanche avec vos adresses IP actuelles.

2voto

Matheus Points 29

Vous pouvez supprimer { useUnifiedTopology : true } et réinstaller les dépendances de Mongoose ! Cela a fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X