MongooseServerSelectionError: connect ECONNREFUSED ::1:27017 에러 해결
$ node index.js
APP IS LISTENING ON PORT !
OH NO MONGO CONNECTION ERROR!!!!
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at _handleConnectionErrors (C:\Users\User\project2\Mongoose_Express\node_mod
ules\mongoose\lib\connection.js:792:11)
at NativeConnection.openUri (C:\Users\User\project2\Mongoose_Express\node_mo
dules\mongoose\lib\connection.js:767:11)
at runNextTicks (node:internal/process/task_queues:60:5)
at listOnTimeout (node:internal/timers:538:9)
at process.processTimers (node:internal/timers:512:7) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: null,
maxElectionId: null,
maxSetVersion: null,
commonWireVersion: 0,
logicalSessionTimeoutMinutes: null
},
code: undefined
}
몽고 커넥션 에러가 떠서 구글링했더니 index.js 파일의 몽구스 connect 를
mongodb://localhost:27017
대신 아래와 같이
"mongodb://127.0.0.1:27017
로 변경해 주었더니 에러가 해결되었다.
- - - - - - - - - - -아래의 내용 참고
https://github.com/Automattic/mongoose/issues/12366
node18은 내부적으로 ipv6를 사용해서 localhost는 127.0.0.1이 아니라 :::1 을 가르켜서 localhost대신 ip를 사용하라는 말을 듣고 node 버전 확인해봤더니 18이였음.
17 이상에서 nodejs를 사용하는 경우 mongoose가 고칠 수 있는 것이 아니므로 (수동으로 IP 확인을 처리하지 않고) mongoose 설명서가 localhost더 이상 참조하지 않고 대신 변경되었습니다 127.0.0.1.
요약: 검색하는 모든 사용자: IPv4 주소 대신 IPv6 주소를 가리키는
NodeJS 17이 변경되었습니다 localhost. 해결 방법은 명령줄 옵션을 통해 mongodb 인스턴스를 IPv6 주소로 대체하거나 수신 대기하도록 하는 localhost것 입니다. 현재 기본값) 또는127.0.0.1--ipv6--bind_ip_all