本地Mongoose连接27017端口失败问题求助
解决Mongoose连接MongoDB 27017端口被拒绝的问题
问题描述
本地尝试用Mongoose连接27017端口时被拒绝,此前正常运行的应用也出现相同错误,尝试过MongoDB Compass连接、执行mongod命令、重装MongoDB均无效。
错误输出
\Desktop\rest-api\node_modules\mongoose\lib\connection.js:792 err = new ServerSelectionError(); ^ MongooseServerSelectionError: connect ECONNREFUSED ::1:27017 at _handleConnectionErrors (C:\Users\siddh\OneDrive\Desktop\rest-api\node_modules\mongoose\lib\connection.js:792:11) at NativeConnection.openUri (C:\Users\siddh\OneDrive\Desktop\rest-api\node_modules\mongoose\lib\connection.js:767:11) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:537:9) at process.processTimers (node:internal/timers:511:7) { reason: TopologyDescription { type: 'Unknown', servers: Map(1) { 'localhost:27017' => ServerDescription { address: 'localhost:27017', type: 'Unknown', hosts: [], passives: [], arbiters: [], tags: {}, minWireVersion: 0, maxWireVersion: 0, roundTripTime: -1, lastUpdateTime: 557344, lastWriteDate: 0, error: MongoNetworkError: connect ECONNREFUSED ::1:27017 at connectionFailureError (C:\Users\siddh\OneDrive\Desktop\rest-api\node_modules\mongodb\lib\cmap\connect.js:370:20) at Socket.<anonymous> (C:\Users\siddh\OneDrive\Desktop\rest-api\node_modules\mongodb\lib\cmap\connect.js:293:22) at Object.onceWrapper (node:events:627:26) at Socket.emit (node:events:512:28) at emitErrorNT (node:internal/streams/destroy:151:8) at emitErrorCloseNT (node:internal/streams/destroy:116:3) at process.processTicksAndRejections (node:internal/task_queues:82:21) { cause: Error: connect ECONNREFUSED ::1:27017 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16) { errno: -4078, code: 'ECONNREFUSED', syscall: 'connect', address: '::1', port: 27017 }, [Symbol(errorLabels)]: Set(1) { 'ResetPool' } }, topologyVersion: null, setName: null, setVersion: null, electionId: null, logicalSessionTimeoutMinutes: null, primary: null, me: null, '$clusterTime': null } }, stale: false, compatible: true, heartbeatFrequencyMS: 10000, localThresholdMS: 15, setName: null, maxElectionId: null, maxSetVersion: null, commonWireVersion: 0, logicalSessionTimeoutMinutes: null }, code: undefined }
代码
import express from 'express'; import { APP_PORT } from './config/index.js'; const app = express(); import mongoose from 'mongoose'; mongoose.connect('mongodb://localhost:27017/rest-api', {useNewUrlParser: true, useUnifiedTopology: true}).then(()=>{ console.log('Database connected'); }); app.listen(APP_PORT,()=>{console.log(`Server running on port ${APP_PORT}`)})
解决方案
1. 强制使用IPv4连接
错误显示连接的是IPv6地址::1,多数情况下MongoDB默认仅监听IPv4的127.0.0.1,将连接字符串中的localhost替换为127.0.0.1即可:
mongoose.connect('mongodb://127.0.0.1:27017/rest-api', {useNewUrlParser: true, useUnifiedTopology: true}).then(()=>{ console.log('Database connected'); });
2. 确认MongoDB服务正在运行
- 按Win+R输入
services.msc打开服务管理器,找到MongoDB相关服务(通常名为MongoDB Community Server),检查状态是否为正在运行,未运行则右键启动。 - 或用命令行启动:
net start MongoDB
(若服务名不是MongoDB,替换为实际名称)
3. 检查27017端口是否被占用
打开CMD执行以下命令,查看端口占用情况:
netstat -ano | findstr :27017
若有结果,说明端口被其他进程占用,可通过任务管理器杀掉对应PID的进程,或修改MongoDB配置文件更换端口(优先解决服务问题,不推荐更换端口)。
4. 配置MongoDB监听所有IP
找到MongoDB配置文件mongod.cfg(默认路径:C:\Program Files\MongoDB\Server\[版本号]\bin\mongod.cfg),修改net.bindIp配置:
net: bindIp: 0.0.0.0 # 允许所有IP连接,也可指定127.0.0.1,::1同时支持IPv4和IPv6
修改后重启MongoDB服务。
内容的提问来源于stack exchange,提问作者siddhant daryanani
相关产品推荐
相关产品推荐

