J'essaie de créer une application fullstack en lisant le tutoriel suivant:
J'ai suivi toutes les étapes, puis j'ai essayé d'exécuter:
node server.js
Mais j'ai eu l'erreur suivante:
Erreur de connexion MongoDB: MongoTimeoutError: la sélection du serveur a expiré après 30000 ms à Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308: 9) à listOnTimeout (internal / timers.js: 531: 17) at processTimers (internal / timers.js: 475: 7) {nom: 'MongoTimeoutError', raison: Erreur: connectez ETIMEDOUT 99.80.11.208:27017 sur TCPConnectWrap.afterConnect [as oncomplete] (net. js: 1128: 14) {name: 'MongoNetworkError', [Symbol (mongoErrorContextSymbol)]: {}}, [Symbol (mongoErrorContextSymbol)]: {}} (node: 42892) UnhandledPromiseRejectionWarning: MongoTimeoutError: 300 ms Server selection à Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308:9) sur listOnTimeout (internal / timers.js: 531: 17) sur processTimers (internal / timers.js: 475: 7)
Mon code sur 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'));
Aucune suggestion?
la source
user:password
votreusername and password
chaîne de connexion?Réponses:
allez simplement dans le panneau d'administration de mongodb atlas.Allez dans l'onglet sécurité> Accès réseau> Puis ajoutez votre IP à la liste blanche en l'ajoutant
Voir cette image pour localiser le menu particulier
Remarque: vérifiez votre adresse IP sur Google, puis ajoutez-la
la source
Assurez-vous que les "<" et ">" sont supprimés lorsque vous remplacez les champs utilisateur et mot de passe. Cela a fonctionné pour moi
la source
Parfois, cette erreur se produit en raison de l'adresse IP autorisée à accéder à notre base de données.
Rappelez-vous, votre application peut bien fonctionner, puis trouvez cette erreur. À chaque fois que cela se produit, la plupart du temps, vos adresses IP ont changé, ce qui n'est pas sur la liste blanche des adresses autorisées.
Tout ce que vous avez à faire est d'aller mettre à jour la liste blanche avec vos adresses IP actuelles
la source
Mettez votre adresse IP de connexion en liste blanche. Atlas autorise uniquement les connexions client au cluster à partir des entrées de la liste blanche du projet. La liste blanche du projet est distincte de la liste blanche de l'API, qui restreint l'accès de l'API à des adresses IP ou CIDR spécifiques.
REMARQUE
Vous pouvez ignorer cette étape si Atlas indique dans l'étape Configuration de la sécurité de la connexion que vous avez déjà configuré une entrée de liste blanche dans votre cluster. Pour gérer la liste blanche IP, voir Ajouter des entrées à la liste blanche.
Si la liste blanche est vide, Atlas vous invite à ajouter une adresse IP à la liste blanche du projet. Vous pouvez soit:
Cliquez sur Ajouter votre adresse IP actuelle pour mettre en liste blanche votre adresse IP actuelle.
Cliquez sur Ajouter une adresse IP différente pour ajouter une seule adresse IP ou une plage d'adresses notée CIDR.
Pour les clusters Atlas déployés sur Amazon Web Services (AWS) et utilisant l'homologation VPC, vous pouvez ajouter un groupe de sécurité associé au VPC homologue.
Vous pouvez fournir une description facultative de l'adresse IP ou de la plage CIDR nouvellement ajoutée. Cliquez sur Ajouter une adresse IP pour ajouter l'adresse à la liste blanche.
la source
Vous pouvez supprimer l' indicateur {useUnifiedTopology: true} et réinstaller la dépendance des mangoustes! ça a marché pour moi.
la source
J'ai eu la même erreur. Ce sont les étapes que j'ai suivies pour le résoudre
Après ces étapes, cela a fonctionné comme d'habitude. j'espère que cela vous aidera les gars.
la source
Tu peux essayer:
la source
node 3.00 or later
et copié `` mongodb + srv: // user: <password> @ cluster0-3zrv8.mongodb.net / test? RetryWrites = true & w = majorité ''? Là, vous avez le choix entre trois options, choisissez le nœud du milieuj'ai eu ce problème, pour moi la solution était de vérifier si mon ip était correctement configuré et avant de confirmer dans cet écran
entrez la description de l'image ici
la source
Veuillez vérifier votre mot de passe, votre nom d'utilisateur OU votre configuration IP . La plupart du temps, "La sélection du serveur a expiré après 30000 ms à Timeout._onTimeout" survient chaque fois que les éléments ci-dessus ne correspondent pas à la configuration de votre serveur.
la source
Je suis en mesure de résoudre le problème. Tout allait bien, mais le pare-feu bloquait l'accès au port 27017. La connectivité peut être testée à http://portquiz.net:27017/ ou en utilisant telnet au point de terminaison qui peut être récupéré à partir de clusters-> Métriques.
Merci à tous pour les suggestions
la source
Essayez de créer un nouvel utilisateur dans l'accès à la base de données avec la méthode d'authentification par défaut qui est "SCRAM". Créez ensuite un nouveau cluster pour cela. Ça a marché pour moi! Mon fichier server.js
la source
Quelle est votre version mangouste? car il y a un problème avec une certaine version mangouste. Veuillez visiter ce lien pour plus de détails " https://github.com/Automattic/mongoose/issues/8180 ". Quoi qu'il en soit, je faisais face au même problème, mais après avoir utilisé une ancienne version (5.5.2), cela a fonctionné pour moi. Veuillez essayer et faites-moi savoir ce qui s'est passé.
la source
Cela peut être essentiellement dû à une mise à jour npm. Je viens de mettre à jour vers npm v 6.13.7. et j'ai commencé à avoir cette erreur.
En suivant les instructions de @Matheus, j'ai commenté la ligne "{useUnifiedTopology: true}" et j'ai pu passer au travers.
J'ai mis à jour la mangouste et tout fonctionne bien.
la source
Utilisez-vous un antivirus, un pare-feu, un VPN ou sur le réseau restreint (par exemple, une connexion Wi-Fi / LAN professionnelle / commerciale)? Essayez ensuite de le désactiver / de vous reconnecter à un autre réseau. Certaines adresses IP / connexions peuvent être bloquées par l'administrateur d'un réseau que vous utilisez ou simplement un antivirus peut avoir des politiques de pare-feu. Même si vous
0.0.0.0
en avezIP Address
à l'Atlas MongoDB.la source
J'ai eu le même problème. Je pouvais me connecter à partir de MongoDB Compass ou de mon application Node en utilisant les chaînes de connexion que Atlas m'a fournies. Je l'ai résolu en ajoutant mon adresse IP dans la liste blanche d'Atlas.
la source
À tous ceux qui luttent encore contre ce problème. J'ai résolu ce problème en définissant tous les paramètres comme le nom d'utilisateur, le mot de passe et le nom de base de données dans les options de mangouste.
Auparavant, le code était comme ça. (Quand j'ai eu l'erreur).
Notez que l'URL dans mongo connect.
mongodb://${dbAddress}:${dbPort}/${dbName}
.Nouveau code sans erreur.
Notez les options et l'url.
Ceci est mon env local. Pas de production env.
J'espère que ce sera utile.
la source
essayez de spécifier le pilote de noeud, version 2,2,12 dans le cluster -> connect -> connectez votre application. la nouvelle chaîne doit être avec mongodb: //. utilisez cette chaîne pour vous connecter. n'oubliez pas de saisir un mot de passe
la source