connect ECONNREFUSED ::1:27017

connect ECONNREFUSED ::1:27017

问题描述:

老师, 我的终端报错,这是为什么呀,我该怎么改好呢?

mongoose连接出错 MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED ::1:27017


相关截图:

https://img1.sycdn.imooc.com/climg/658bebe609fbdba121861654.jpg

具体终端输出

<-- 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 = router

正在回答 回答被采纳积分+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 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师