由于 URI 错误,无法连接到 MongoDB
Posted
技术标签:
【中文标题】由于 URI 错误,无法连接到 MongoDB【英文标题】:Cannot connect to MongoDB because of wrong URI 【发布时间】:2021-05-09 00:04:54 【问题描述】:我试图在节点服务器上运行 mongoDB Full Code here from MongoDB:
我的 mongo 版本:4.4.3
节点版本:v15.7.0
我从 MongoDB 导入了入门代码,代码如下:
const MongoClient = require("mongodb");
// Connection URI
const uri =
"mongodb+srv://sample-hostname:27017/?poolSize=20&writeConcern=majority";
// Create a new MongoClient
const client = new MongoClient(uri);
async function run()
try
// Connect the client to the server
await client.connect();
// Establish and verify connection
await client.db("admin").command( ping: 1 );
console.log("Connected successfully to server");
finally
// Ensures that the client will close when you finish/error
await client.close();
run().catch(console.dir);
在终端上,当我运行“node app.js”时,它会抛出以下错误:
> (node:79653) Warning: Accessing non-existent property 'MongoError' of
> module exports inside circular dependency (Use `node --trace-warnings
> ...` to show where the warning was created) MongoParseError: URI does
> not have hostname, domain name and tld
> at parseSrvConnectionString (/home/harmony/Desktop/FruitsProject/node_modules/mongodb/lib/core/uri_parser.js:50:21)
> at parseConnectionString (/home/harmony/Desktop/FruitsProject/node_modules/mongodb/lib/core/uri_parser.js:594:12)
> at connect (/home/harmony/Desktop/FruitsProject/node_modules/mongodb/lib/operations/connect.js:284:3)
> at /home/harmony/Desktop/FruitsProject/node_modules/mongodb/lib/mongo_client.js:225:5
> at maybePromise (/home/harmony/Desktop/FruitsProject/node_modules/mongodb/lib/utils.js:681:3)
> at MongoClient.connect (/home/harmony/Desktop/FruitsProject/node_modules/mongodb/lib/mongo_client.js:221:10)
> at run (/home/harmony/Desktop/FruitsProject/app.js:12:18)
> at Object.<anonymous> (/home/harmony/Desktop/FruitsProject/app.js:21:1)
【问题讨论】:
还有更多代码吗?堆栈的底部表明还有更多代码。 @MinusFour 请查看docs.mongodb.com/drivers/node/fundamentals/connection 获取来自 MongoDB 站点的完整代码,谢谢! 【参考方案1】:错误Accessing non-existent property 'MongoError' of > module exports inside circular dependency
是由mongodb 3.6.4中的一个bug引起的
已经举报here
回到版本 3.6.3 对我有用:
npm uninstall mongodb --save
安装版本 3.6.3
npm i mongodb@3.6.3
【讨论】:
引用 MongoDB 员工在该线程中的评论“......我与 Node 驱动程序团队联系。警告可以安全忽略,希望在即将发布的版本中消失。” Link【参考方案2】:对于搜索此警告的每个人,请不要担心,这只是一个版本错误,并且已经报告。只需卸载 3.6.4 版本并安装 3.6.3 版本即可,如 @kmgt 答案中的回答。
更多详情:https://developer.mongodb.com/community/forums/t/warning-accessing-non-existent-property-mongoerror-of-module-exports-inside-circular-dependency/15411
https://github.com/Automattic/mongoose/issues/9900
【讨论】:
你为什么不忽略这个 mongoError 的警告? 忽略警告绝不是一个好主意,如果你研究它们,发现它并不重要,那么当然,你可以忽略。但是,如果您的终端上出现一些您不确定的废话,我建议您至少搜索一下。【参考方案3】:我按照建议降级了 MongoDB,但仅此一项并不能解决问题。
我也必须降级 mongoose 才能消除错误。
我降级为:
MongoDB 版本 3.6.3 猫鼬版本 5.11.15
【讨论】:
【参考方案4】:您不必降级 MongoDB,只需将 mongoose 包降级到 5.11.15,如下所述: https://github.com/Automattic/mongoose/issues/9900#issuecomment-778535254 我正在使用 Mongo v4.4.3,只是降级 mongoose 为我工作。
【讨论】:
【参考方案5】:我也有类似的错误,在 MacOS Catelina 上运行:
(node:3265) Warning: Accessing non-existent property 'MongoError' of module exports inside circular dependency (Use `node --trace-warnings ...` to show where the warning was created) Server started on port 3000
之前运行于:
节点:v14.15.4, mongodb:v4.4.3, 猫鼬:v5.11.18
降级mongoose到v5.11.15后,错误消失了。
从终端卸载猫鼬 npm uninstall mongoose
安装猫鼬版本 5.11.15 npm i mongoose@5.11.15
【讨论】:
【参考方案6】:[mongo 错误1
因为我在图片上方用红色矩形显示的线
【讨论】:
以上是关于由于 URI 错误,无法连接到 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Pentaho PDI CE 连接到 MongoDb
Docker - Node.js + MongoDB - “错误:无法连接到 [localhost:27017]”