代码之家  ›  专栏  ›  技术社区  ›  Jean-Baptiste

未处理的承诺拒绝:错误:URL格式不正确,无法分析

  •  5
  • Jean-Baptiste  · 技术社区  · 7 年前

    同时,我对AWS和MongoDB还比较陌生,所以我在尝试连接我的Mongodatabse(托管在AmazonLinuxEC2实例上)时遇到了一个非常基本的问题。原因是,我无法建立到数据库的路径。

    以下是我想要使用的: mongoose.connect('mongod://ec2-user@ec2-XX-XX-XXX-XXX-XX.compute-1.amazonaws.com:27017/test' ) .

    下面是我的测试lambda函数的结果: UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: URL malformed, cannot be parsed

    我在使用MongoDB 3.6.5。

    5 回复  |  直到 7 年前
        1
  •  17
  •   Ashh    7 年前

    Mongoose 5.x支持 遵循授权语法,并确保在URL中没有使用任何特殊字符,如 @,-,+,>

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

    或者如果你想删除折旧警告 避免使用当前的URL字符串分析器。”

    添加选项 useNewUrlParser

    mongoose.connect(MONGO_URL, {
      auth: {
        user: MONGO_DB_USER,
        password: MONGO_DB_PASSWORD
      },
      { useNewUrlParser: true }
    })
    
        2
  •  4
  •   Jean-Baptiste    7 年前

    我的问题是一个更简单的URI问题。因为有一个 @ 蒙古文地址中的字符。

    我不得不用这个:

    return mongoose.connect(encodeURI(process.env.DB_CONNECT)
    
        3
  •  2
  •   Bryan Kimani    6 年前

    例如,如果您在环境文件中使用了以下URI MongoDB://<dbuser>:<dbpassword>@ds055915.mlab.com:55915/fullstack-vue-graphql 确保您的密码在 MONGOD_URI 没有像 @ . 我曾经用过 @ 作为密码字符的一部分,正在获取错误。在我从我的 DB Password 都按预期工作。

        4
  •  1
  •   Ipsita Rout    6 年前

    在我的情况下,下面的工作很好。

    里面 D.J.

    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)); }
        }
    );
    

    注:

    我的节点版本是10.x

    MongoDB服务器版本为3.6.3

    Mongoose版本为^5.1.2

        5
  •  0
  •   Sukma Saputra    7 年前

    我只想更新@anthony winzlet的答案,因为我有相同的错误,我已经用这个代码解决了。

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

    我只是添加了回调和 useNewUrlParser:true . 我用 "mongoose": "^5.2.7", .

    编码愉快!