我的快速应用程序中的mongoose.connect名称为:MongoParserError,消息:“ URI格式错误,无法解析”

时间:2018-07-13 01:11:18

标签: mongoose uri connect

mongoose
    .connect(db,{ useNewUrlParser: true}) 
    .then(() => console.log("MongoDB conected ..."))
    .catch(err => console.log(err));

上面提到的是我的代码,其中“ db”是mLab提供的数据库URI

当我编写运行快速代码时,它会捕获错误并给出特定的错误消息,如下所示:

  

URI格式不正确,无法解析

{ MongoError: URI malformed, cannot be parsed
    at parseConnectionString (/Users/dibs/Desktop/mern-ex/node_modules/mongodb-core/lib/uri_parser.js:207:21)
    at connect (/Users/dibs/Desktop/mern-ex/node_modules/mongodb/lib/operations/mongo_client_ops.js:179:3)
    at connectOp (/Users/dibs/Desktop/mern-ex/node_modules/mongodb/lib/operations/mongo_client_ops.js:283:3)
    at executeOperation (/Users/dibs/Desktop/mern-ex/node_modules/mongodb/lib/utils.js:420:24)
    at MongoClient.connect (/Users/dibs/Desktop/mern-ex/node_modules/mongodb/lib/mongo_client.js:168:10)
    at Promise (/Users/dibs/Desktop/mern-ex/node_modules/mongoose/lib/connection.js:487:12)
    at Promise (<anonymous>)
    at NativeConnection.Connection.openUri (/Users/dibs/Desktop/mern-ex/node_modules/mongoose/lib/connection.js:484:19)
    at Mongoose.connect (/Users/dibs/Desktop/mern-ex/node_modules/mongoose/lib/index.js:229:15)
    at Object.<anonymous> (/Users/dibs/Desktop/mern-ex/server.js:20:6)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Function.Module.runMain (module.js:605:10)
  name: 'MongoParseError',
  message: 'URI malformed, cannot be parsed',
  [Symbol(mongoErrorContextSymbol)]: {} }

7 个答案:

答案 0 :(得分:3)

我有问题。 请检查您的uri是否不是undefined 您可以使用console.log(db)

答案 1 :(得分:2)

嘿,我解决了这个问题:

尝试一下,首先确保您的 .env 文件具有正确的链接, 然后转到 index.js

将名称从require(“dotenv”).config()更改为dotenv,然后再次更改为env

这是因为它迫使MongoDb重新启动,我尝试使用dotenv,它给了我同样的错误,但是在更改 index.js 中的值后,它可以正常工作。 please refer to the image

答案 2 :(得分:1)

首先检查变量/ env变量是否可以在控制台中记录

console.log(db);

如果您从入口点以外的其他文件执行应用程序,则将其添加到该其他文件中

require('dotenv/config');

OR

require('dotenv').config();

OR

在连接文件中也有任何这样的导入(根据您使用的软件包)。

答案 3 :(得分:0)

确保在您的mongoURL文件中(myurl.js或其他任何文件)“ module.exports ”中没有“ module.export

答案 4 :(得分:0)

放这样的东西

mongoose.connect(DB_URL_WITHOUT_USER_PASS, {
auth: {
  user: "USER",
  password: "PASS"
},
useNewUrlParser:true
  }).then(
    () => { 
        console.log("Database connected");
    },
    err => { 
        /** handle initial connection error */ 
        console.log("Error in database connection. ", err);
    }
);

答案 5 :(得分:0)

在使用node.js开发并将URI隐藏在.env文件中时,很容易忘记包含“ dotenv”模块。如果console.log(YOUR_MONGO_URI)undefined,请检查package.json文件中的dotenv依赖项。如果不存在,

npm install dotenv

require('dotenv').config();

在相关文件中。

答案 6 :(得分:0)

我在为 JavaScript 开发人员做 mongo 大学课程时遇到了这个问题。

我最初将 dotenv_win 重命名为 dotenv_win.env

我应该把整个东西重命名为 env

你可以把它放在终端中来修复它:

ren dotenv_win .env