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

Mongoose连接被拒绝,MongoDB服务启动报Error1067求助

Express+Mongoose连接本地MongoDB失败及Windows服务启动异常解决

问题描述

开发基于Express框架的Node.js项目时,用Mongoose连接本地MongoDB失败,报错MongooseServerSelectionError: connect ECONNREFUSED ::1:27017, connect ECONNREFUSED 127.0.0.1:27017。同时Windows本地MongoDB服务无法启动,提示“Windows无法在本地计算机上启动MongoDB服务器(MongoDB)服务,Error 1067: 进程意外终止”。

项目代码

主文件

const express  = require("express");
const path = require("path");
const app = express();
const hbs = require("hbs");
require("./db/conn")
const port = process.env.PORT || 3000 ;

const static_path = path.join(__dirname,"../public");
const template_path = path.join(__dirname,"../templates/views");
const partials_path = path.join(__dirname,"../templates/partials");

app.use(express.static(static_path))
app.set("view engine", "hbs");
app.set("views",template_path);
hbs.registerPartials(partials_path);

app.get("/"  , (req,res)=> {
    res.render("index")
}
);

app.listen(port, () => {
    console.log(`server is running at port no ${port}`)
})

MongoDB连接文件(conn.js)

const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost:27017/youtubeRegistration" , {
    // useNewUrlParser : true,
    // useUnifiedTopology: true,
    // useCreateIndex : true
}).then(() =>{
    console.log(`connection successful`);
}).catch((e)=>{
    console.log(`no connection ${e}`)
})

错误信息

no connection MongooseServerSelectionError: connect ECONNREFUSED ::1:27017, connect ECONNREFUSED 127.0.0.1:27017

解决步骤

1. 排查MongoDB服务启动失败原因

Error 1067基本是配置或权限问题,按以下步骤检查:

  • 确认数据/日志目录存在且有权限:找到MongoDB安装目录下的mongod.cfg,查看dbPath和logPath对应的路径,手动创建不存在的目录,同时确保系统账户对这两个目录有读写权限。
  • 检查配置文件格式:打开mongod.cfg,排查是否有语法错误,比如多余逗号、引号不匹配。参考正确的配置片段:
    storage:
      dbPath: C:\Program Files\MongoDB\Server\6.0\data
    systemLog:
      destination: file
      path: C:\Program Files\MongoDB\Server\6.0\log\mongod.log
      logAppend: true
    net:
      port: 27017
      bindIp: 127.0.0.1
    
  • 手动启动看详细错误:以管理员身份打开命令提示符,执行命令直接启动mongod,看具体报错:
    mongod --dbpath "C:\你的数据目录路径"
    
    这样能精准定位是目录问题、端口占用还是其他错误。

2. 调整Mongoose连接配置

  • 服务正常启动后,修改conn.js的连接字符串,指定IPv4地址避免IPv6解析问题:
    mongoose.connect("mongodb://127.0.0.1:27017/youtubeRegistration")
      .then(() => console.log("connection successful"))
      .catch(e => console.log(`no connection ${e}`))
    
  • 新版Mongoose不再需要useNewUrlParser等旧配置项,直接删除注释即可。

3. 重启服务验证

修复完成后,在服务管理器中重启MongoDB服务,或者用命令行操作:

net stop MongoDB
net start MongoDB

之后启动项目,检查是否能成功连接数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:35:06