我正在使用 NodeJS 和 MongoDB 使用 mongodb 包。当我运行 mongod 命令时,它工作正常并给出“等待端口 27017 上的连接”。所以, mongod 似乎正在工作。但是当我运行 node index.js 命令时,MongoClient 不起作用并给出错误-
MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
https://i.stack.imgur.com/lXL3f.png
我已经安装了 mongo db 3.4,我的代码是-
var MongoClient = require('mongodb').MongoClient;
var dburl = "mongodb://localhost:27017/test";
MongoClient.connect(dburl, function(err, db) {
if (err) {
throw err;
}
console.log('db connected');
db.close();
});
我在 root 上创建了 data/db 目录并授予了写权限。 mongod.conf 文件采用 db 路径作为-
存储:dbPath:/var/lib/mongo
但似乎它实际上将 db 路径作为 data/db 而不是 var/lib/mongo
它早些时候工作,但突然停止。
这可能是因为 MongoDB 服务没有启动。请按照以下步骤启动它:
转到控制面板,然后单击管理工具。双击服务。将打开一个新窗口。搜索 MongoDB.exe。右键单击它并选择开始。
服务器将启动。现在再次执行 npm start
,这一次代码可能会工作。
从 Nodejs 14 升级到 17 后,我的应用程序停止工作。
我得到的错误是
MongoServerSelectionError: connect ECONNREFUSED ::1:27017
解决方案只是将 localhost
替换为 0.0.0.0
。即在我的源代码中我不得不改变
const uri = "mongodb://localhost:27017/";
const client = new MongoClient(uri);
至
const uri = "mongodb://0.0.0.0:27017/";
const client = new MongoClient(uri);
我将其发布为答案,因为我在互联网上的任何地方都找不到解决方案,而且我在这个问题上浪费了很多时间......
mongodb://0.0.0.0:27017/
?,尝试连接到每个 ip?
我根本忘了启动 MongoDB。转到终端中的单独选项卡并键入:
sudo service mongod start
对于 Windows - 只需转到 Mongodb 文件夹(例如:C:\ProgramFiles\MongoDB\Server\3.4\bin)并在文件夹中打开 cmd 并键入“mongod.exe --dbpath c:\data\db”
如果 c:\data\db 文件夹不存在,则自行创建并再次运行上述命令。
现在一切都应该正常了。))
对于 Windows 用户。
发生这种情况是因为 MondgDB 服务器已停止。要解决这个问题,你可以,
1 搜索服务,使用左下角搜索选项进行搜索。 2 然后有一个名为“服务”的齿轮图标。 3 单击后,您将看到一个包含大量服务的窗口 4 向下滚动,您将找到“MongoDB 服务器(MongoDB)”。 5 所以你会看到有一个启动服务的选项。 6 开始吧。 1 然后打开你的命令提示符。 2 型 mongod
现在您可以连接到您的服务器了。
如果您的 sql server 服务关闭,此步骤也可以正常工作。 (查找 sql server 服务)
我有以下错误:
Error: connect ECONNREFUSED 127.0.0.1:27017
就我而言,发生此问题是因为根本没有安装 MongoDB。
解决方案是从以下位置安装 MongoDB:
https://www.mongodb.com/download-center/community
安装后 ECONNREFUSED
错误不再出现。
希望有帮助。
尝试通过使用 mongod 提供 --dbpath 来启动 mongoDB 服务器。
sudo mongod --dbpath /var/lib/mongo/data/db &
最后的“&”将在您的服务器上启动 mongodb 服务器作为服务。
希望它有效。
在您的设备中搜索 services.msc 并单击开始运行 mongoDB 服务器
https://i.stack.imgur.com/CKcTE.png
开始运行 MongoDB 服务器后,您将能够运行您的程序
对于 Ubuntu 用户,请运行 sudo systemctl restart mongod
按 CTRL+ALT+DELETE/task manager ,然后转到 services ,找到 MongoDB ,右键单击它。开始。回到终端。 npm start 它会起作用。
我有同样的错误,因为我没有安装 mongoDB。确保您已经安装了 mongodb,如果没有,您可以从这里下载它https://www.mongodb.com/download-center/community
对于 Windows 用户:Mongo 版本 4.4 使用以下命令:NET STOP MONGODB
– 停止 MongoDB 作为服务,如果返回“mongoDb 服务未运行,则使用以下命令启动服务”NET START MONGODB
–将 MongoDB 作为服务启动。
这对我有用。
在 Mac 上我必须运行 brew services start mongodb-community@4.4
检查:Install MongoDB Community Edition on macOS
如果您已经安装了“MongoDB”,如果您不小心退出了 MongoDB 服务器,请“重新启动系统”。
这个方法解决了我...
[仅在 Windows 上]
还有另一种方法:
按:
Windows + R
类型:
services.msc
并单击“确定”,打开“服务”窗口,然后在列表中搜索“MongoDB 服务器”。找到“MongoDB Server”后,右键单击并从弹出菜单中选择“开始”。
MongoDb 服务器将开始运行。
希望它有效!
只需从终端启动 mongo 服务器
Ubuntu -
sudo systemctl start mongod
sudo
运行。
我刚刚在互联网上找到了一个解决方案,如果您使用的是最新的 nodejs (v17.x),请尝试将 mongodb url 从 localhost 更新为 127.0.0.1
我在 Windows 10 上遇到了同样的问题。我只是卸载了 MongoDB 并再次安装它并开始工作。它解决了我的问题。
方法一
如果是 MAC OS,请运行以下命令并重试:
brew services restart mongodb-community
停止 mongodb-community...(可能需要一段时间)==> 成功停止 mongodb-community(标签:homebrew.mxcl.mongodb-community)==> 成功启动 mongodb-community(标签:homebrew.mxcl.mongodb-community )
您可以运行 Cmd as administrator
并编写以下命令来启动 Mongodb service
:
net start MongoDB
或者
点击window键+r键输入services.msc然后按ok等待打开服务搜索mongodb点击右键开始按
并重新打开 mongodb
很可能您的 mongo db 服务没有启动。对于 ubuntu:sudo service mongod start
对于 Windows:转到服务并启动 MongoDB 服务
还安装 mondoDB 服务的链接 https://www.mongodb.com/download-center/community
我遇到了这个问题,感谢这个人的回答,我解决了https://stackoverflow.com/a/47433551/7917608
我今天遇到了同样的问题..并且一直在寻找答案..我在 Ubuntu 上...但是,我找不到适用于该线程的正确问题..经过大量研究,以下内容终于对我有用! ! :)
一、运行后
mongod dbpath
如果出现 mongodb 正在寻找我安装的 mongodb 应用程序中缺少的 data/db 目录.. 所以我运行了以下命令:
$ sudo mkdir -p /data/db
然后运行,
$ sudo chown -R $USER /data/db
chown - 更改文件/目录的所有权。 IE。文件/目录的所有者更改为指定的所有者,但不会修改权限。如此处详述:https://unix.stackexchange.com/questions/402062/how-are-chown-and-chmod-command-different-in-the-given-operation
最后,运行
`$ sudo systemctl enable mongod.service
它将给出一条消息: Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /lib/systemd/system/mongod.service 并启动了服务。
检查 .sock 文件的位置。就我而言,它位于 /tmp 文件夹中。
然后运行以下命令。
chown mongodb:mongodb /tmp/mongodb-27017.sock
sudo systemctl start mongod
mongosh
这对我有用。
如果您使用 MongoDb Compass
,请确保您已安装 MongoDB Community Server
。
我在 Windows 上遇到了同样的问题。
Ctrl+C 关闭 mongod,然后重新启动 mongod。
我不确定,但似乎最初 mongod 正在打开和关闭连接。然后,它无法关闭一些较早的连接并达到打开的限制。重新启动mongod后,它再次工作。
您可能需要在运行节点服务器时继续运行数据库进程(通过运行 mongod
)。
请确保您的 mongo DB 设置为自动并在控制面板/管理工具/服务中运行,如下所示。这样您就不必每次都手动启动 mongod.exe。
https://i.stack.imgur.com/SHkfB.png
解决方案是从以下位置安装 MongoDB:https://www.mongodb.com/download-center/community
因为您在尝试启动 mongo shell 之前没有启动 mongod 进程。
启动mongod服务器
mongod
打开另一个终端窗口
启动 mongo shell
mongo
在我的特定实例中,我连接到一个 VPN,并且以某种方式阻止了 localhost 与 MongoDB 的连接。当我断开我的 VPN 时它起作用了。这是一个特殊情况,但很高兴知道。因此,任何阻碍您的网络连接的东西,都可以解决。
如果您在 WSL 上并尝试从 Windows 访问 MongoDB,那么您必须为 WSL 安装 Mongo。