Express JS与MongoDB连接失败求助(含代码及错误日志)
解决Mongoose连接本地MongoDB的两个问题:弃用警告与连接拒绝
一、处理MONGODB DRIVER弃用警告
你代码里设置的useNewUrlParser和useUnifiedTopology选项,在MongoDB Node.js驱动4.0.0及以上版本已经默认启用且不再生效,因此会抛出弃用警告。解决方法直接删除这两个配置项即可。
二、解决MongooseServerSelectionError: connect ECONNREFUSED ::1:27017连接错误
这个错误表示Node.js程序无法连接到本地MongoDB服务,常见原因和解决步骤如下:
检查MongoDB服务是否启动
Windows用户按下Win+R输入services.msc打开服务面板,找到MongoDB服务,确保它处于「正在运行」状态;未启动则右键选择「启动」。
macOS/Linux用户可通过命令行启动,比如brew services start mongodb-community(Homebrew安装的情况),或直接运行mongod命令(需配置环境变量或指定数据目录)。替换localhost为127.0.0.1
部分环境下localhost会解析到IPv6地址::1,但MongoDB默认可能仅监听IPv4。将连接字符串改为mongodb://127.0.0.1:27017/myDatabase,强制使用IPv4连接。确认端口号正确
确保MongoDB使用默认端口27017,若修改过MongoDB配置文件,需同步修改连接字符串里的端口号。检查防火墙设置
确认本地防火墙未阻止Node.js访问27017端口,必要时临时关闭防火墙测试连接。
修复后的完整代码
const express = require("express"); const app = express(); app.listen(3000, () => { console.log("Server is running at port number 3000"); }) const mongoose = require("mongoose"); // 去掉弃用选项,替换localhost为127.0.0.1 mongoose.connect("mongodb://127.0.0.1:27017/myDatabase") .then(() => {console.log("Connection is Succeed")}) .catch((e) => { console.error("Received an Error", e); });
内容的提问来源于stack exchange,提问作者MD YAWAR
相关产品推荐
相关产品推荐

