programing

node.js에서 mongodb에 연결할 때 ECONN 거부 오류가 발생했습니다.

css3 2023. 6. 4. 22:30

node.js에서 mongodb에 연결할 때 ECONN 거부 오류가 발생했습니다.

제가 매우 어리석고 건방진 일을 하고 있다는 것을 알지만, 누군가가 맥의 node.js에서 mongodb에 대한 기본 데이터베이스 연결을 설정하는 것을 도와줄 수 있기를 바랍니다.

홈브루를 이용해 몽고드브를 설치했는데, 꽤 잘 작동한 것 같습니다.서버(mongod)를 로컬 로그인 사용자로 시작하고, 두 번째 터미널을 열어 mongo를 사용하여 연결할 수 있음을 확인하였습니다.mongo를 실행하면 "connecting to: localhost:27017/test"라는 메시지와 함께 명령 프롬프트가 표시됩니다.몽고 쉘에서 몇 가지 명령을 실행했습니다. 모든 것이 그곳에서 작동하는 것 같습니다.두 터미널을 모두 열어두고 실행 중입니다.

또한 localhost:28017로 웹 인터페이스에 접속할 수 있다는 것도 확인했습니다.

node.js를 설치하고 mongoose 패키지를 추가했습니다.이제 super simple node.js 앱(로컬 로그인한 사용자로도 실행)을 사용하여 연결을 시도합니다.

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

다음 오류가 발생했습니다.

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: connect ECONNREFUSED
    at errnoException (net.js:901:11)
    at Object.afterConnect [as oncomplete] (net.js:892:19)

아주 간단한 일을 하려고 벽에 머리를 부딪히는 것.제가 무엇을 빠뜨리고 있나요?

편집: mongod의 로그입니다.보시다시피 여러 번 시도해 보았지만 모두 순식간에 실패하고 있습니다.

Thu Dec  5 08:19:43.700 [initandlisten] MongoDB starting : pid=14412 port=27017 dbpath=/usr/local/var/mongodb 64-bit host=mobadmins-MacBook-Pro-3.local
           08:19:43.700 [initandlisten] db version v2.4.8
           08:19:43.700 [initandlisten] git version: nogitversion
           08:19:43.700 [initandlisten] build info: Darwin mobadmins-MacBook-Pro-3.local 12.4.0 Darwin Kernel Version 12.4.0: Wed May  1 17:57:12 PDT 2013; root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
           08:19:43.700 [initandlisten] allocator: tcmalloc
           08:19:43.700 [initandlisten] options: { bind_ip: "127.0.0.1", config: "/usr/local/etc/mongod.conf", dbpath: "/usr/local/var/mongodb", logappend: "true", logpath: "/usr/local/var/log/mongodb/mongo.log", rest: true }
           08:19:43.700 [initandlisten] journal dir=/usr/local/var/mongodb/journal
           08:19:43.700 [initandlisten] recover : no journal files present, no recovery needed
           08:19:43.729 [websvr] admin web console waiting for connections on port 28017
           08:19:43.729 [initandlisten] waiting for connections on port 27017
           08:22:34.561 [initandlisten] connection accepted from 127.0.0.1:52160 #3 (1 connection now open)
           08:22:34.563 [conn3] recv(): message len 1124073472 is too large. Max is 48000000
           08:22:34.563 [conn3] end connection 127.0.0.1:52160 (0 connections now open)
           08:24:41.298 [initandlisten] connection accepted from 127.0.0.1:52166 #4 (1 connection now open)
           08:24:41.304 [conn4] end connection 127.0.0.1:52166 (0 connections now open)
           08:25:06.938 [initandlisten] connection accepted from 127.0.0.1:52168 #5 (1 connection now open)
           08:25:06.943 [conn5] end connection 127.0.0.1:52168 (0 connections now open)
           08:25:18.220 [initandlisten] connection accepted from 127.0.0.1:52172 #6 (1 connection now open)
           08:25:18.225 [conn6] end connection 127.0.0.1:52172 (0 connections now open)
           08:25:38.811 [initandlisten] connection accepted from 127.0.0.1:52175 #7 (1 connection now open)
           08:25:38.816 [conn7] end connection 127.0.0.1:52175 (0 connections now open)

ECONN 거부 오류

노드에서 이 오류가 발생하는 몇 가지 이유는 다음과 같습니다.

  1. 포트가 이미 일부 서비스를 제공하고 있으므로 연결을 거부합니다.

    명령줄로 이동하고 다음 명령을 사용하여 pid를 얻습니다.

    $ lsof -i:port_number

    이제 다음을 사용하여 pid를 죽입니다.

    $ kill -9 pid(which you will get by above command)

  2. 서버가 실행되고 있지 않습니다. 예를 들어, 이 경우 다음 명령을 사용하여 몽구스 서버가 실행 중이거나 실행 중인지 확인하십시오.

    $ mongod

  3. 의 당의가도있다습니 .localhost올바르게 구성되지 않았으므로 사용하십시오.127.0.0.1:27017localhost 사용할 수 .

좋아요, 이것은 제가 위에 올린 정보에서 진실로 드러나지 않은 또 다른 사례였습니다.제 node.js 은 매우 간단했지만, 저는 이 문제를 일으킨 것으로 보이는 다른 두 줄을 제 node.js 코드에 포함시켰습니다.

구체적으로, 저는 잘못된 db 정보를 사용하여 별도의 데이터베이스를 호출하는 다른 코드를 호출하는 다른 변수를 선언했습니다.이것이 Xinz의 코드를 사용할 때 콘솔 로그 오류가 변경되지 않는 것처럼 보인 이유입니다.실제로 오류를 던진 것은 mongoose.connect 명령이 아닙니다!

학습한 교훈, 문제를 현지화하고 관련 없는 코드에 대해 의견을 제시합니다.미안해 얘들아, 내가 바보인 줄 알았어요.

저는 'localhost'를 '127.0.0.1'로 변경한 후 다시 작동하기 시작했습니다.

mongoose.connect('mongodb://127.0.0.1/test')

다음 코드를 사용하여 mongodb 연결을 설정합니다.

var mongoose = require('mongoose');

var mongoURI = "mongodb://localhost:27017/test";
var MongoDB = mongoose.connect(mongoURI).connection;
MongoDB.on('error', function(err) { console.log(err.message); });
MongoDB.once('open', function() {
  console.log("mongodb connection open");
});

서버를 시작하는 동안 mongod가 실행 중인지 확인합니다.Express를 사용하고 계십니까 아니면 단순한 node.js 서버를 사용하고 계십니까?위 코드에서 발생하는 오류 메시지는 무엇입니까?

매우 이상합니다. 하지만 제 경우에는 와이파이 연결을 전환합니다.

공용 와이파이를 사용하고 전화 연결로 전환합니다.

node.js를 사용하여 간단한 restapi를 작성하는 동안 같은 문제에 직면했습니다. 결국 그것이 wifi 차단과 보안 이유 때문이라는 것을 알게 되었습니다. 모바일 핫스팟을 사용하여 한 번 연결해 보십시오. 만약 이것이 바로 해결될 것입니다.

localhost를 사용하지 않고 로컬 IP 주소(예: 127.0.0.1)만 사용할 수 있습니다.

(localhost = 127.0.0.1:27017)

'mongodb://127.0.0.1:27017/<ele.이름 >'

이것이 제가 해결책을 얻은 방법입니다.

저도 같은 문제가 있었어요.관리자 콘솔에서 동일한 코드를 실행하여 해결되었습니다.

mongod시스템에서 로컬로 정상적으로 실행되고 있습니다.몽고 컴퍼스로 연결할 수 있었지만 몽구스는 단순히 연결을 거부했습니다. 마법의 는 마의단어는법입니다.directConnection=true에 있어서와 같이

mongodb://127.0.0.1:27017/test?directConnection=true

버전:

  • 몽구스 6.5.2
  • mongodb 4.4.13 공동체
  • 노드 18.5.0

저도 같은 문제가 있었습니다.내가 한 일은 달리는 것입니다.mongodb명령을 입력합니다.그런 다음 다른 탭에서 내 프로그램을 실행합니다.이것으로 저의 문제가 해결되었습니다.하지만 실행할 스크립트를 만드는 것과 같은 다른 솔루션을 시도하고 있습니다.mongodb연결하기 전에.

때때로 대상 데이터베이스가 다른 컴퓨터에 있는 경우 IP, 방화벽, 포트 포워딩 등의 적합성을 확인해야 합니다.

저도 같은 문제가 있었습니다. 제가 한 일은 단지 추가한 것뿐입니다.setTimeoutMongo 서버에 연결하기 전 약 10초 동안 문제를 해결했습니다.왜 제가 지연을 추가해야 하는지는 모르겠지만 효과가 있었습니다...

저도 같은 문제가 생겨서 이렇게 고쳤습니다.

도커 컨테이너 또는 도커 컴포지트에서 mongo 및 nodejs를 실행하는 경우

따라서 localhost를 mongo(내 경우에는 도커의 컨테이너 이름)로 대체합니다. 아래와 같은 것이 nodejs mongo 연결 파일에 있습니다.

var mongoURI = "mongodb://mongo:27017/<nodejs_container_name>";

수동으로 mongodb 서비스를 시작했습니다.

제어판 -> 관리도구 -> 서비스 -> Mongodb

그런 다음 시작/재시작합니다.끝났어요!

해피 코딩! :-)

원격 MongoDB 서버에 연결하려고 할 때 ECONNFUSED 오류가 발생하면 bind ip 옵션이 다음과 같이 설정되어 있는지 확인합니다.0.0.0.0.

자세한 내용은 https://www.mongodb.com/docs/manual/core/security-mongodb-configuration/ 을 참조하거나 다음과 같이 MongoDB 구성 파일(mongod.conf, read more)을 사용하십시오.

net:
  bindIp: 0.0.0.0

이 게시물을 확인하십시오.https://stackoverflow.com/a/57589615

그것은 아마도 mongodb가 실행되고 있지 않다는 것을 의미합니다.명령줄을 사용하거나 services.msc를 실행하고 mongodb를 사용하도록 설정해야 합니다.

저는 가능한 모든 해결책을 시도했지만 도움이 되지 않았습니다.저는 잠시 쉬다가 다음 사항을 변경했습니다.간단한 오타.누군가를 돕는 것도 같은 상황입니다.보낸 사람: app.listen((포트)=>syslog.log(Server is running at port ${PORT}))

받는 사람: app.listen(PORT, console.log(Server is running at port ${PORT}) 이전에 데이터베이스 몽고 아틀라스에 연결하도록 했지만 요청을 받았습니다. 오류: 연결 ECONNFUSED였습니다.

mongoDB 나침반 클라이언트로 이동하여 다음 단계를 수행할 수 있습니다: 1.연결 필드에 개별적으로 입력을 누릅니다.

2.호스트 이름 형식: 127.0.0.1

CONNECT를 클릭합니다.

Mongodb가 실행되고 있지 않지만 node.js에 대한 모듈이 있습니다. 데이터베이스 경로가 없습니다.수정이 루트에 새 폴더를 생성했으므로 sudomkdir -p /data/db/를 실행한 다음 sudochown을 실행합니다.id -u/data/db

이 문제는 해결되었습니다.

제어판 -> 관리도구 -> 서비스 -> MongoDB 서버 시작

안녕하세요. 재미있고 재미있다는 뜻입니다.시작 버튼으로 머리를 이동하고 ho에서 서비스를 입력합니다. 아래로 내려와서 mongodb를 찾습니다. 마우스 오른쪽 단추를 클릭하고 시작을 클릭합니다.Mongod가 시작합니다.프로젝트로 돌아가서 나중에 감사합니다.

언급URL : https://stackoverflow.com/questions/20386464/econnrefused-error-when-connecting-to-mongodb-from-node-js