connect ECONNREFUSED ::1:27017
问题描述:
老师, 我的终端报错,这是为什么呀,我该怎么改好呢?
mongoose连接出错 MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED ::1:27017
相关截图:

具体终端输出
<-- POST /api/create
[body] { content: '新留言内容123', username: 'zhangsan' }
mongoose连接出错 MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED ::1:27017
at new MongooseServerSelectionError (/Users/tina1/Downloads/面试/server/Learn/test4/node_modules/mongoose/lib/error/serverSelection.js:22:11)
at Connection.openUri (/Users/tina1/Downloads/面试/server/Learn/test4/node_modules/mongoose/lib/connection.js:823:32)
at Mongoose.connect (/Users/tina1/Downloads/面试/server/Learn/test4/node_modules/mongoose/lib/index.js:333:15)
at Object.<anonymous> (/Users/tina1/Downloads/面试/server/Learn/test4/db/db.js:10:10)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Module._load (node:internal/modules/cjs/loader:960:12)
at Module.require (node:internal/modules/cjs/loader:1143:19)
at require (node:internal/modules/cjs/helpers:119:18)
at Object.<anonymous> (/Users/tina1/Downloads/面试/server/Learn/test4/db/model.js:2:18)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Module._load (node:internal/modules/cjs/loader:960:12)
at Module.require (node:internal/modules/cjs/loader:1143:19)
at require (node:internal/modules/cjs/helpers:119:18)
at Object.<anonymous> (/Users/tina1/Downloads/面试/server/Learn/test4/routes/comments.js:2:21)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Module._load (node:internal/modules/cjs/loader:960:12) {
reason: TopologyDescription {
type: 'Single',
setName: null,
maxSetVersion: null,
maxElectionId: null,
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
stale: false,
compatible: true,
compatibilityError: null,
logicalSessionTimeoutMinutes: null,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
commonWireVersion: null
},
[Symbol(mongoErrorContextSymbol)]: {}
}
node:internal/process/promises:288
triggerUncaughtException(err, true /* fromPromise */);
^
MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED ::1:27017
at new MongooseServerSelectionError (/Users/tina1/Downloads/面试/server/Learn/test4/node_modules/mongoose/lib/error/serverSelection.js:22:11)
at Connection.openUri (/Users/tina1/Downloads/面试/server/Learn/test4/node_modules/mongoose/lib/connection.js:823:32)
at Mongoose.connect (/Users/tina1/Downloads/面试/server/Learn/test4/node_modules/mongoose/lib/index.js:333:15)
at Object.<anonymous> (/Users/tina1/Downloads/面试/server/Learn/test4/db/db.js:10:10)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Module._load (node:internal/modules/cjs/loader:960:12)
at Module.require (node:internal/modules/cjs/loader:1143:19)
at require (node:internal/modules/cjs/helpers:119:18)
at Object.<anonymous> (/Users/tina1/Downloads/面试/server/Learn/test4/db/model.js:2:18)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Module._load (node:internal/modules/cjs/loader:960:12)
at Module.require (node:internal/modules/cjs/loader:1143:19)
at require (node:internal/modules/cjs/helpers:119:18)
at Object.<anonymous> (/Users/tina1/Downloads/面试/server/Learn/test4/routes/comments.js:2:21)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Module._load (node:internal/modules/cjs/loader:960:12) {
reason: TopologyDescription {
type: 'Single',
setName: null,
maxSetVersion: null,
maxElectionId: null,
servers: Map(1) {
'localhost:27017' => ServerDescription {
address: 'localhost:27017',
error: Error: connect ECONNREFUSED ::1:27017
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16) {
name: 'MongoNetworkError',
[Symbol(mongoErrorContextSymbol)]: {}
},
roundTripTime: -1,
lastUpdateTime: 1703668613460,
lastWriteDate: null,
opTime: null,
type: 'Unknown',
minWireVersion: 0,
maxWireVersion: 0,
hosts: [],
passives: [],
arbiters: [],
tags: []
}
},
stale: false,
compatible: true,
compatibilityError: null,
logicalSessionTimeoutMinutes: null,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
commonWireVersion: null
},
[Symbol(mongoErrorContextSymbol)]: {}
}
Node.js v18.18.0
[nodemon] app crashed - waiting for file changes before starting...db.js
// 连接数据库(mongodb的服务端),进行数据连接
const mongoose = require('mongoose')
const url = 'mongodb://localhost:27017'
const dbName = 'comment2'
// mongoose.set('useCreateIndex', true) // mongoose版本高于6.x 不需要配置这2行
// mongoose.set('useFindAndModify', true) // mongoose版本高于6.x 不需要配置这2行
// 开始连接
mongoose.connect(`${url}/${dbName}`,{
useNewUrlParser: true,
useUnifiedTopology: true
})
const conn = mongoose.connection
// 监听报错事件
conn.on('error', (err)=>{
console.log('mongoose连接出错',err)
})
module.exports = mongoose // commonjs语法model.js
// 数据模型(规范数据格式)
const mongoose = require('./db') // 它对 mongoose做了一些处理
// 定义 User schema(数据规范)
const UserSchema = mongoose.Schema({
username:{
type: String,
required: true, // 必须
unique: true // 唯一,不重复
},
password: String,
age: Number,
city: String,
gender:{ // 性别
type: Number,
default: 0 // 0 保密,1 男,2 女
}
}, {
timestamps: true // 时间戳, 会自动添加文档的创建时间,更新时间
})
// 定义 User Model
const User = mongoose.model('user', UserSchema) // user 是数据库comments2 中 users集合等单数形式,针对users集合中每一条数据的规范设置
// 定义 Comment Schema
const CommentSchema = mongoose.Schema({
content: {
type: String,
required: true
},
username: String, // 留言创建者
},{ timestamps: true })
const Comment = mongoose.model('comment', CommentSchema) // 执行后会在compass中自动创建一条comment 集合
module.exports = {
User,
Comment
}comments.js
const router = require('koa-router')()
const { Comment } = require('../db/model')
router.prefix('/api') // 前缀
router.get('/list', async (ctx, next) => {
const query = ctx.query // req功能,ctx 是request,response 功能的集合
console.log('query=', query)
/**
* 页面地址:
* http://localhost:3000/api/list?filterType=1
* http://localhost:3000/api/list?a=100&b=200
* 终端返回:
* { filterType: '1' }
* { a: '100', b: '200' }
*
* */
// ctx.body = 'list'
ctx.body = {
errno: 0,
data:[
{ content: '新留言内容1', user: 'zhangsan1' },
{ content: '新留言内容2', user: 'zhangsan2' },
{ content: '新留言内容3', user: 'zhangsan3' }
]
}
})
// 定义路由:模拟创建留言
router.post('/create', async (ctx, next) => {
const body = ctx.request.body // request body
console.log('[body]', body)
/**
* 页面地址:
* http://localhost:3000/api/create
* 终端返回:
* { content: '新留言内容123', user: 'zhangsan' }
* */
// ctx.body = 'create'
// 获取数据
const { content, username } = body
// 插入到数据库
const newComment = await Comment.create({
content,
username
})
ctx.body = {
errno: 0,
message:'成功',
data: newComment
}
})
module.exports = router8
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小李
2023-12-27 17:51:01
同学你好,从代码上看没看出什么问题,类似于这样的异常大概率是指端口号没有进行匹配所造成的,这跟node版本多多少少都会有关系,因为node18或更高的版本(Node.js 将解析localhost为 IPv6 地址::1)建议同学要将node版本降低。如解决此类的问题可以将node设定为14-16的版本不要太高。
***在windows系统上有一个叫mvn的工具它是可以管理node版本的,也就是说安装多个版本使用哪个版本可以进行选择。Mac本的话应该是叫n工具它与mvn的功能是一样的,同学可以看看它的使用方式-->传送门。这样可以多下载几个node版本,我们的课程中最好要准备12.x 14.x 16.x 18.x的版本建议同学都安装一个。然后对于本次的问题同学可以将node降到node v14或者16版本再试试大概率就可以解决问题了。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星