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

Node.js与MongoDB连接失败求助:代码同教程却无法连接

无法通过Mongoose连接MongoDB Compass的排查与解决

1. 先修复代码中的明显错误

你提供的代码存在两处关键问题:

  • 语法错误:useUnifiedTropology: true 末尾缺少逗号,导致JS解析失败
  • 拼写错误:数据库名称 registartion 多了一个字母t,正确应为 registration
  • 配置项拼写错误:useUnifiedTropology 里的Tropology应为Topology(小写o)

修正后的代码:

const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost:27017/registration", {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true
}).then(() => {
    console.log(`connection successful`);
}).catch((e) => {
    console.log(`no connection`, e); // 建议添加错误详情,方便定位问题
})

2. 检查MongoDB服务状态

如果代码修正后仍无法连接,先确认本地MongoDB服务是否正在运行:

  • Windows:打开「服务」面板,找到MongoDB服务,确保状态为「正在运行」;也可在命令行执行 net start MongoDB 启动服务
  • macOS/Linux:终端执行 brew services start mongodb-community(brew安装)或 sudo systemctl start mongod(系统服务)

3. 验证MongoDB Compass的连接配置

打开Compass,确认你使用的连接字符串和代码中的完全一致:mongodb://localhost:27017/registration。如果Compass能正常连接,说明服务本身没问题,重点排查代码或依赖。

4. 适配Mongoose版本差异

如果你的Mongoose版本和教程差异较大(比如6.x及以上),部分旧配置选项已被废弃,可简化连接代码:

const mongoose = require("mongoose");

async function connectDB() {
    try {
        await mongoose.connect("mongodb://localhost:27017/registration");
        console.log("connection successful");
    } catch (e) {
        console.error("no connection", e.message);
    }
}

connectDB();

Mongoose 6+ 默认启用了useNewUrlParser、useUnifiedTopology等配置,无需手动添加。

5. 排查端口占用问题

确认27017端口未被其他程序占用:

  • Windows:执行 netstat -ano | findstr :27017 查看占用进程
  • macOS/Linux:执行 lsof -i :27017 查看占用进程
    若端口被占用,停止对应程序,或修改MongoDB的监听端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:48:17