1

我对开发非常陌生,到目前为止,我一直在遵循在线课程说明,但现在我决定将我所有的工作从 GoormIDE 迁移到 WebStorm。在 GoormIDE 中,MongoDB 和 NodeJS 是自动安装的,所以我必须在我的 Windows 上安装它们才能正常工作。

我设法在本地运行了该应用程序(您可以在此处查看:https ://yelpcampuk.herokuapp.com/ ),但是一旦我点击“查看所有露营地”按钮,我就会收到此错误:错误:连接 ECONNREFUSED 127.0.0.1:27017。

如果我能从有使用 WSL2 和 MongoDB 经验的人那里获得一些帮助以找出问题所在,那就太好了。是的,MongoDB 正在 Windows 命令中运行,因为它无法使用 WSL2 在 Ubuntu 20.04 上运行(但如果我错了,请纠正我)

这就是我在 GoormIDE 中连接到数据库的方式,它运行良好:

var url = process.env.DATABASEURL || "mongodb://127.0.0.1:27017/YelpCamp"

mongoose.set("useUnifiedTopology", true);
mongoose.connect(url, {
  useNewUrlParser: true,
  useCreateIndex: true
}).then(() => {
  console.log('Connected to DB!');
}).catch(err => {
  console.log('ERROR:', err.message);
});

但是当我尝试通过 WebStorm(或 VS Code)在我的笔记本电脑上运行时,我只会收到上述错误。

欢迎任何建议,因为我花了很多时间进行研究,但我还不能真正接近解决方案......

ps:我是2个月前才开始学习编码,所以如果我写了一些愚蠢的东西,请原谅我!谢谢大家!

4

2 回答 2

0

这对我有用:

mongod --bind_ip 0.0.0.0在 Windows CMD 上

我能够通过 WSL2 连接到它。检查您是否有其他 MongoDB 服务器正在运行,我必须在运行命令之前结束每个任务。

于 2021-04-10T22:14:28.370 回答
0

经过大量研究后,我在这个 Github 线程上找到了正确的方法:https ://github.com/microsoft/WSL/issues/5486#issuecomment-810866629

除了将您的 ip 绑定到 0.0.0.0 之外,关键部分是您需要使用 WSL 检测为您的计算机的主机 IP 进行连接cat /etc/resolv.conf在 WSL 终端上使用。(见下表中的最后一项 7)。

这是从上面提到的链接中引用的,所以所有的学分都归作者(sylvix)。无需重新安装 mongo DB,但只是为了它,我将所有步骤:

  1. 在 Windows 上安装 MongoDB 时,请确保启用 Windows 服务,否则您必须手动运行它。
  2. 安装后编辑 mongod.cfg 并将 bindIp 设置为 0.0.0.0 (请参阅@MKrupauskas 以前的帖子,谢谢,顺便说一句)
  3. 转到 Windows 设置中的防火墙和网络保护(开始 -> 键入“防火墙” -> 回车)
  4. 单击窗口底部的“允许应用程序通过防火墙”链接
  5. 单击“更改设置”,然后将启用“允许其他应用程序”按钮。点击它。浏览“mongod.exe”可执行文件(在 %Program Files%\MongoDB\Server\XY\bin 中。然后单击“网络类型”并选择这两种类型。然后单击“添加”。
  6. 它将向 Defender 防火墙添加一组规则,这些规则在手动添加时由于某种原因不起作用。
  7. 在 WSL 中找到主机 IP。在我的机器上cat /etc/resolv.conf工作,在“名称服务器”部分之后。或者谷歌搜索“wsl find host ip”,那里有很多解决方案。蒙戈 %INSERT_HOST_IP_HERE%
于 2022-01-25T12:09:38.133 回答