由于 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 &gt; 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]”

Mongoose 无法连接到 mLab 环境

Mongoose 无法连接到 mLab 环境

MongoDB 错误:连接到 mongo 副本集时无法到达集合 [set_name] 的主节点

无法连接到 Docker 容器内的 MongoDB