mongoose.connect 在我的 Express 应用程序中有名称:MongoParseError,消息:'URI malformed, cannot be parsed'

mongoose.connect in my express app have name: MongoParserError , message: 'URI malformed, cannot be parsed'

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

上面提到的是我的代码,其中 'db' 是 mLab

提供的我的数据库 URI

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

URI malformed, cannot be parsed

{ 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)]: {} }

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

放这样的东西

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

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

npm install dotenv

require('dotenv').config();

在相关文件中。

嘿,我解决了这个问题:

试试这个,首先确保您的 .env 文件包含正确的 link, 然后转到 index.js 并找到 require(“dotenv”).config()

将名称从 dotenv 更改为 env,然后再更改回 dotenv

它的作用是强制 MongoDb 重新启动,我尝试使用 Command + S 并且它给了我同样的错误但是在更改 [=30= 中的值之后] 它工作正常。 please refer to the image

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

console.log(db);

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

require('dotenv/config');

require('dotenv').config();

连接文件中也有任何此类导入(根据您使用的包)。

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

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

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

您可以将其放入终端中进行修复:

ren dotenv_win .env