2
votes

Mongoose ne peut pas se connecter: Erreur: querySrv ENOTIMP mongodb.tcp.cluster1-owfxv.mongodb.net

Mongoose ne peut pas se connecter à mogodb Atlas. Cela me donne à chaque fois cette erreur:

  const url = "mongodb+srv://name:password@cluster1-owfxv.mongodb.net/test?retryWrites=true";

    const mongoDbOptions = {
        useNewUrlParser: true,
        reconnectTries: 10,
        autoReconnect: true

    };
    mongoose.connect(url, mongoDbOptions).then((r) => { }).catch((e) => {
        console.log(e);
    });

J'exécute localement dans le cluster kubernetes dans minikube. Si je lance le projet directement, cela fonctionne parfaitement mais avec minikube, cela me donne toujours une erreur.

Voici mon code:

 Error: querySrv ENOTIMP _mongodb._tcp.cluster1-owfxv.mongodb.net

Le message d'erreur n'est pas si clair pour moi. C'est étrange que cela fonctionne directement mais avec le cluster kubernetes, cela ne fonctionne pas.

J'apprécierai vraiment pour toute contribution.


1 commentaires

L'erreur signifie essentiellement que votre application ne peut pas atteindre l'adresse externe. Cela serait essentiellement dû aux «paramètres réseau» du conteneur en cours d'exécution. En tant que tel, les questions IMHO sur "la connectivité et la configuration" devraient vraiment être posées sur serverfault.com comme une plate-forme plus appropriée pour quelque chose qui n'est pas vraiment de la programmation, ou lié à quelque chose qui doit être corrigé dans le code de l'application lui-même.


3 Réponses :


5
votes

Essayez d'utiliser une chaîne de connexion compatible avec le pilote mongo 2.2.12 ou une version ultérieure, c'est-à-dire une avec mongodb: // username: password @ host1: port, host2: port, host3: port / databaseName

On ne sait pas pourquoi la connexion à mongodb ne fonctionne pas avec la nouvelle URL.


7 commentaires

Je n'utilise aucun pilote mongo directement. J'utilise uniquement de la mangouste.


Mongoose utilise le pilote mongo en interne. Essayez simplement avec l'ancienne chaîne de connexion et voyez si cela fonctionne.


Je ne sais pas quelle est mon ancienne chaîne de connexion. J'ai juste la dernière chaîne de connexion.


Accédez au tableau de bord atlas et vous y trouverez l'ancienne chaîne de connexion


Oh! Homme, vous êtes génie et sauveur de vie. Cela a parfaitement fonctionné pour moi. J'étais coincé là-dedans pendant plus de 15 jours, mais vous avez résolu mon problème en une minute. Merci beaucoup. J'apprécie beaucoup. Au fait, j'étais juste curieux de savoir pourquoi la dernière chaîne de connexion ne fonctionnait pas? et que pouvons-nous faire pour que la dernière chaîne de connexion fonctionne? J'utilisais la dernière version de Mongoose.


Merci. En fait, je ne sais pas pourquoi les nouvelles chaînes de connexion ne fonctionnent pas correctement. Il y a un problème avec les paramètres réseau lorsqu'ils sont utilisés dans kubernetes. Je ne pense pas que cela ait quoi que ce soit à voir avec la mangouste. Si vous essayez de vous connecter normalement en dehors de kubernetes, vous vous connectez sans aucun problème.


Oui c'est vrai. cela fonctionne bien en dehors de kubernetes. en tout cas, encore une fois, merci beaucoup. Bonne journée :)



0
votes

L'utilisation d'une URL plus ancienne, comme indiqué par @cEeNikC, fonctionne même lorsque la mangouste donne l'erreur suivante:

Error: querySrv ETIMEOUT _mongodb._tcp.cluster0.aq9un.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19) {
  errno: 'ETIMEOUT',
  code: 'ETIMEOUT',
  syscall: 'querySrv',
  hostname: '_mongodb._tcp.cluster0.aq9un.mongodb.net'
}


0 commentaires

0
votes

Accédez à votre paramètre de cluster et activez l'accès à partir de toutes les adresses IP (si vous le faites dans un but d'apprentissage car ce n'est pas sûr).


0 commentaires