在 M1 Pro Monterey 12.0.1 上运行和连接到 MongoDB 时遇到问题

Posted

技术标签:

【中文标题】在 M1 Pro Monterey 12.0.1 上运行和连接到 MongoDB 时遇到问题【英文标题】:Having trouble running and connecting to MongoDB on M1 Pro Monterey 12.0.1 【发布时间】:2021-12-24 00:41:04 【问题描述】:

我正在使用 VS Code、MongoDB Community Server 5.0、node.js 后端,并且刚刚更新到 Monterey 12.0.1。我已按照说明使用 Mongo 指令here 安装 MongoDB。 Homebrew 安装成功,MongoDB 5.0 看起来已经成功安装在 opt/homebrew 目录下,看起来不错。

尝试从 VS Code 启动和连接数据库时,我遇到了两个问题:

    使用brew services start mongodb-community(或mongodb-community@5.0)命令时,MongoDB 无法启动。

在使用brew services 检查状态后,它最初显示为全新安装/重新安装,但随后立即变为错误。 MongoDB 本周早些时候工作正常,但在我更新到 12.0.1 后随机停止工作,然后完全停止工作。我更新的原因是因为下期。

    本周早些时候 MongoDB 启动良好,我能够使用 npm run dev 从 VSCode 连接到服务器,但我开始随机收到以下问题:

    MongoNetworkError: failed to connect to server [localhost:27017] on first connect [Error: connect ECONNREFUSED ::1:27017 at TCPConnectWrap.afterConnect [as oncomplete]

最初我重新安装了 MongoDB 并能够再次连接,但随后 MongoDB 开始出现问题,就像我在第一期中提到的那样。启动时,VS Code 拒绝连接数据库,一直报同样的错误。

我没有对后端代码/配置进行任何会影响我从 VS Code 连接的能力的更改。当 MongoDB 能够启动时,我可以通过 MongoDB Compass 连接到数据库就好了,但是 VS Code 仍然拒绝连接。我们做了一些研究并尝试将 mongoose.connect 从 localhost 更改为 localhost:27017,尝试从新的 repo 开始,重新安装 MongoDB 几次,但没有成功。

我们已经尝试解决这个问题好几天了,我想知道这是否只是使用新 M1 的问题,并且必须等待软件赶上。任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

对于发现此问题的任何人 - 经过 3 天的反复试验,我们找到了答案。

我们最终为mongod 命令指定了数据库文件夹,因为brew services 无法使用mongo:alias mongod="mongo --port 27017 --dbpath /opt/homebrew/var/mongodb”。这解决了第一个问题,我们可以使用mongod 启动服务器。

为了解决第二个问题,我将 localhost 替换为应用程序的 mongoose.connect 配置的指定 ip:

mongoose.connect('mongodb://127.0.0.1:27017/app')

由于某种原因 localhost 无法连接,但使用 127.0.0.1:27017 有效。

【讨论】:

说对了,哟! 也为我做了诀窍。我真的很想知道为什么与 localhost 的连接字符串不起作用。在猫鼬文档中,他们说当本地主机名已更改而我没有触及时,可能会出现问题。文档链接:link 对我来说,用 127.0.0.1 替换 localhost 没有用。它最终的诀窍是将参数 directConnection=true&ssl=false 添加到我在 .env 文件中的连接中。【参考方案2】:

这对我有用

你只需要进入/tmp文件夹,删除mongodb-27017.sock文件,然后在终端重新启动mongo db即可。 p>

当您删除 mongodb-27017.sock 文件时,您需要注意文件所有者和权限。如果只有root用户可以删除这个文件,那么你需要更改为root用户才能删除它。

【讨论】:

我查看了 /tmp 文件夹,但没有看到 mongodb-27017.sock 文件。我是 Macbook 的新手,所以我可能找错了地方。我去了 Finder > Command + Shift + G > /tmp,只看到一个 comp.apple.launch 文件、MozzileUpdate 文件和 powerlog 文件夹。

以上是关于在 M1 Pro Monterey 12.0.1 上运行和连接到 MongoDB 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 13.1 卡在 Apple M1 Pro 上安装模拟器

Quantum Espresso v6.8 无法在 MacBook 上编译 (Monterey 12.0.1 (21A559))

在 Apple Silicon M1 上使用 Ruby 3.0.2 在 MacOS Monterey 上安装 sqlite3 时出错

将 mac 更新到 12.0.1 monterey 后无法运行 virtualbox - 仅主机适配器出错

无法运行 latexindent macOS Monterey 12.0.1

兼容M1芯片丨StarUML 4.0.1 For MAC版本丨软件安装包下载 安装教程步骤丨苹果Monterey系统丨解决失败