web-dev-qa-db-fra.com

Rejet de promesse non gérée: Erreur: URL mal formée, impossible d'analyser

En même temps que aws et mongodb, je suis nouveau La raison en est que je ne suis pas en mesure de créer le chemin d'accès à ma base de données.

Voici ce que j'essaie d'utiliser: mongoose.connect('mongod://[email protected]:27017/test' ).

Et voici le résultat de ma fonction de test lambda: UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: URL malformed, cannot be parsed

J'utilise mongodb 3.6.5.

3
Jean-Baptiste

Mongoose 5.x prend en charge la syntaxe suivante pour l’autorisation et s’assure également que vous n’avez utilisé aucun caractère spécial dans l’URL comme @,-,+,>

mongoose.connect(MONGO_URL, {
  auth: {
    user: MONGO_DB_USER,
    password: MONGO_DB_PASSWORD
  }
})

Ou si vous souhaitez supprimer l'avertissement de privation Évitez que "l'analyseur de chaîne d'URL en cours soit obsolète"

Ajouter l'option useNewUrlParser

mongoose.connect(MONGO_URL, {
  auth: {
    user: MONGO_DB_USER,
    password: MONGO_DB_PASSWORD
  },
  { useNewUrlParser: true }
})
11
Anthony Winzlet

Mon problème était un problème plus simple d'URI. Comme il y avait un caractère @ dans l'adresse du mongod.

Je devais utiliser ceci:

return mongoose.connect(encodeURI(process.env.DB_CONNECT)
2
Jean-Baptiste

Si vous avez utilisé l'URI suivant dans votre fichier d'environnement, par exemple MongoDB://<dbuser>:<dbpassword>@ds055915.mlab.com:55915/fullstack-vue-graphql Assurez-vous que votre mot de passe dansMONGOD_URI ne comporte pas de caractère spécial comme @. J'avais utilisé @ dans le caractère de mon mot de passe et j'obtenais l'erreur. Après avoir supprimé les caractères spéciaux de mon DB Password, tout a fonctionné comme prévu.

2
Bryan Kimani

Dans mon cas, le ci-dessous a bien fonctionné.

À l'intérieur db.js

const mongoose = require('mongoose');
const MONGODB_URI = "mongodb://Host-name:27017/db-name?authSource=admin";
const MONGODB_USER = "mongouser";
const MONGODB_PASS = "myasri*$atIP38:nG*#o";

const authData =  {
    "user": MONGODB_USER,
    "pass": MONGODB_PASS,
    "useNewUrlParser": true,
    "useCreateIndex": true
}; 
mongoose.connect(
    MONGODB_URI, 
    authData,
    (err) => {
        if (!err) { console.log('MongoDB connection succeeded.'); }
        else { console.log('Error in MongoDB connection : ' + JSON.stringify(err, undefined, 2)); }
    }
);

Remarque: 

La version de mon nœud est 10.x 

La version du serveur MongoDb est 3.6.3

la version mangouste est ^ 5.1.2

0
Ipsita Rout

Je veux juste mettre à jour la réponse de @ anthony-winzlet, parce que j'ai la même erreur et que j'ai résolu avec ce code. 

mongoose.connect(url, {
  auth: {
    user:'usrkoperasi',
    password:'password'
  },
  useNewUrlParser:true
}, function(err, client) {
  if (err) {
    console.log(err);
  }
  console.log('connect!!!');
});

Je viens d'ajouter callback et useNewUrlParser:true. J'utilise "mongoose": "^5.2.7",.

Bonne codage!

0
Sukma Saputra