복붙노트

[MONGODB] 처리되지 않은 약속을 거부 : 오류 : URL을 구문 분석 할 수 없습니다, 부정

MONGODB

처리되지 않은 약속을 거부 : 오류 : URL을 구문 분석 할 수 없습니다, 부정

내가 아마존 리눅스 EC2 인스턴스에서 호스팅, 내 몽고, 데이타베이스에 연결을 시도에 아주 기본적인 시점에서 붙어있어, 그래서 나는 동시에 AWS와 MongoDB를 새로운 오전. 그 이유는 내가 내 데이터베이스의 경로를 구축 할 수 아니에요입니다.

mongoose.connect에게 ( 'mongod : //ec2-user@ec2-XX-XX-XXX-XXX-XX.compute-1.amazonaws.com : 27017 / 테스트') 여기가 내가 사용하려고 해요 것입니다.

그리고 여기 내 테스트 람다 함수의 결과입니다 UnhandledPromiseRejectionWarning 처리되지 않은 약속 거절 (거부 ID : 2) : 오류 : URL 형식이 잘못, 구문 분석 할 수 없습니다

나는 MongoDB의 3.6.5를 사용하고 있습니다.

해결법

  1. ==============================

    1.확인 권한 부여에 대한 구문 다음 5.x를 지원하는 몽구스와 같이 URL에 특수 문자를 사용하지 않은 @, -, +,>

    확인 권한 부여에 대한 구문 다음 5.x를 지원하는 몽구스와 같이 URL에 특수 문자를 사용하지 않은 @, -, +,>

    mongoose.connect(MONGO_URL, {
      auth: {
        user: MONGO_DB_USER,
        password: MONGO_DB_PASSWORD
      }
    })
    

    당신이 deprication 경고 피를 제거 할 경우 또는 "현재의 URL 문자열 파서는 사용되지 않습니다"

    추가 옵션 useNewUrlParser

    mongoose.connect(MONGO_URL, {
      auth: {
        user: MONGO_DB_USER,
        password: MONGO_DB_PASSWORD
      },
      { useNewUrlParser: true }
    })
    
  2. ==============================

    2.내 문제는 더 간단 URI 문제였다. 때문에 mongod 주소에 @ 문자가 있었다.

    내 문제는 더 간단 URI 문제였다. 때문에 mongod 주소에 @ 문자가 있었다.

    나는 이것을 사용했다 :

    return mongoose.connect(encodeURI(process.env.DB_CONNECT)
    
  3. ==============================

    3.당신은 예를 들어, 사용자 환경 파일에 다음 URI를 사용하는 경우 MongoDB를 : // : @ ds055915.mlab.com : 55915 / fullstack-VUE-graphql 확인 비밀번호 inMONGOD_URI 같은 특수 문자가 없습니다 @. 내 비밀번호 문자의 일부로 사용 @ 있었다 오류를 얻고 있었다. 내 DB 암호에서 특수 문자를 제거 후 예상대로 모든 일했다.

    당신은 예를 들어, 사용자 환경 파일에 다음 URI를 사용하는 경우 MongoDB를 : // : @ ds055915.mlab.com : 55915 / fullstack-VUE-graphql 확인 비밀번호 inMONGOD_URI 같은 특수 문자가 없습니다 @. 내 비밀번호 문자의 일부로 사용 @ 있었다 오류를 얻고 있었다. 내 DB 암호에서 특수 문자를 제거 후 예상대로 모든 일했다.

  4. ==============================

    4.내 경우 아래의 일을 잘합니다.

    내 경우 아래의 일을 잘합니다.

    내부 db.js

    const mongoose = require('mongoose');
    const MONGODB_URI = "mongodb://host-name:27017/db-name?authSource=admin";
    const MONGODB_USER = "mongouser";
    const MONGODB_PASS = "myasri*$atIP38:nG*#o";
    
    const authData =  {
        "user": MONGODB_USER,
        "pass": MONGODB_PASS,
        "useNewUrlParser": true,
        "useCreateIndex": true
    }; 
    mongoose.connect(
        MONGODB_URI, 
        authData,
        (err) => {
            if (!err) { console.log('MongoDB connection succeeded.'); }
            else { console.log('Error in MongoDB connection : ' + JSON.stringify(err, undefined, 2)); }
        }
    );
    

    노트 :

    내 노드 버전 10.x를하다

    MongoDB의 서버 버전은 3.6.3이다

    몽구스 버전 5.1.2이다 ^

  5. ==============================

    5.난 그냥 같은 오류가 있기 때문에, 안토니 - winzlet @에서 답을 업데이트 원하고이 코드로 해결할 수 있습니다.

    난 그냥 같은 오류가 있기 때문에, 안토니 - winzlet @에서 답을 업데이트 원하고이 코드로 해결할 수 있습니다.

    mongoose.connect(url, {
      auth: {
        user:'usrkoperasi',
        password:'password'
      },
      useNewUrlParser:true
    }, function(err, client) {
      if (err) {
        console.log(err);
      }
      console.log('connect!!!');
    });
    

    사실 : 난 그냥 콜백 및 useNewUrlParser를 추가합니다. 나는 "몽구스"를 사용 : "^ 5.2.7",.

    코딩 해피!

  6. from https://stackoverflow.com/questions/50590080/unhandled-promise-rejection-error-url-malformed-cannot-be-parsed by cc-by-sa and MIT license