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