You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中Mongoose连接MongoDB报ECONNREFUSED错误求助

解决Mongoose连接MongoDB时的ECONNREFUSED错误

错误原因分析

connect ECONNREFUSED 0.0.0.0:27017 表示Node.js应用无法连接到指定地址和端口的MongoDB服务,核心原因通常是MongoDB服务未启动、连接地址配置错误或服务绑定限制。


解决步骤

1. 确认MongoDB服务正在运行

  • Windows系统:
    按Win+R输入services.msc打开「服务管理器」,找到MongoDB Server服务,确保状态为「正在运行」。未启动则右键选择「启动」,或用命令行:
    net start MongoDB
    
  • macOS/Linux系统:
    用systemctl命令启动并检查状态:
    sudo systemctl start mongod
    sudo systemctl status mongod
    

2. 修正数据库连接字符串

代码中使用的0.0.0.0是服务器端监听地址,客户端连接建议换成兼容更好的本地回环地址localhost或127.0.0.1:

mongoose.connect('mongodb://localhost:27017/mydb', {
    useNewUrlParser: true,
    useUnifiedTopology: true
})

3. 检查MongoDB绑定配置(可选)

若换地址仍无法连接,打开MongoDB配置文件(通常为mongod.conf):

  • 找到bindIp配置项,确保其值包含127.0.0.1或0.0.0.0(允许所有IP连接)
  • 修改后重启MongoDB服务使配置生效

4. 优化代码错误处理

当前错误提示过于简略,补充详细错误信息便于排查:

// 替换原有的错误监听代码
mongoose.connect('mongodb://localhost:27017/mydb', {
    useNewUrlParser: true,
    useUnifiedTopology: true
})
.then(() => console.log("Connected to Database"))
.catch(err => console.log("error in connecting database:", err));

5. 代码其他优化点(可选)

  • 替换body-parser依赖:Express 4.16+已内置该功能,删除body-parser依赖后改用:
    app.use(express.json())
    app.use(express.urlencoded({ extended: true }))
    
  • 修正CORS头:原代码头名称错误,改为标准写法:
    res.set({
        "Access-Control-Allow-Origin": '*'
    })
    
  • 登录接口改用async/await:避免回调地狱,代码更简洁:
    app.post("/login", async (request, response) => {
        try {
            const username = request.body.username;
            const password = request.body.password;
    
            const user = await db.collection('users').findOne({ email: username });
            if (!user) {
                return response.send("Invalid information!❌❌❌! Please create account first");
            }
            if (user.password === password) {
                return response.redirect('login.html');
            } else {
                response.send("Invalid Password!❌❌❌");
            }
        } catch (error) {
            response.send("Invalid information❌");
        }
    })
    

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:53:16