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
相关产品推荐
相关产品推荐

