You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Node.js+TypeScript+Mongoose连接MongoDB Compass时出现MongooseServerSelectionError错误求助

解决Mongoose连接MongoDB时的ECONNREFUSED ::1:27017错误

你遇到的MongooseServerSelectionError: connect ECONNREFUSED ::1:27017错误,核心原因是Mongoose无法建立到MongoDB服务的连接,而且从地址::1可以看出——Node.js现在默认会优先把localhost解析为IPv6地址,但你的MongoDB服务要么没监听IPv6,要么根本没启动。

下面是一步步的排查和解决方法:

1. 先确认MongoDB服务是否在运行

这是最常见的原因:

  • Windows系统:按下Win+R输入services.msc打开服务管理器,找到MongoDB服务(通常命名为MongoDB),查看状态是否为Running。如果没运行,右键点击启动;
  • macOS/Linux系统:如果是用Homebrew安装的,执行brew services list查看MongoDB状态,没运行就用brew services start mongodb-community启动;如果是用系统服务,执行sudo systemctl status mongod,没运行则用sudo systemctl start mongod启动。

2. 强制使用IPv4连接(快速解决)

Node.js在部分环境下会优先解析localhost为IPv6的::1,但MongoDB默认通常只监听IPv4的127.0.0.1。你只需要把连接字符串里的localhost换成127.0.0.1即可:

const url ='mongodb://127.0.0.1:27017/BlogApp'; // 替换localhost为127.0.0.1
mongoose.connect(url)
 .then(() => {console.log("Connected to MongoDB")})
 .catch((err) => console.log(err));

app.listen(PORT, () => {
 console.log(`Your server available at http://localhost:${PORT}`);
})

3. 让MongoDB监听IPv6(可选)

如果你想继续使用localhost并支持IPv6,可以修改MongoDB的配置文件:

  1. 找到mongod.conf配置文件(Windows通常在C:\Program Files\MongoDB\Server\<版本号>\bin,macOS/Linux可能在/usr/local/etc/etc/mongod.conf);
  2. 找到net部分,修改bindIp0.0.0.0,::1(允许所有IPv4和IPv6地址连接),或者直接设置bindIpAll: true
  3. 保存配置后重启MongoDB服务。

4. 检查27017端口是否被占用

如果MongoDB服务运行正常但还是连接失败,可能是27017端口被其他程序占用:

  • Windows:执行netstat -ano | findstr :27017,查看输出中的PID,然后在任务管理器中结束对应进程;
  • macOS/Linux:执行lsof -i :27017,找到占用端口的进程,用kill -9 <PID>结束它。

另外你提到是从JS项目复制配置改成TS版本,其实TypeScript本身不会影响MongoDB的连接逻辑,问题完全出在网络连接或MongoDB服务状态上,和TS无关~

内容的提问来源于stack exchange,提问作者mitas1c

火山引擎 最新活动