감자튀김 공장🍟

MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string. 본문

Study/MongoDB

MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.

Potato potage 2023. 4. 28. 23:36
반응형

클론 프로젝트 진행하는데 이 오류가 안사라져서 3시간 내내 수정했다...

안되면 질문해야지 했는데 끄적이니까 바로 됐다... 피곤해요...

 

 

먼저 index.js와 .env 파일을 가지고 삽질 했다.

 

1. dotenv 설치 >> 당연히 처음 시작할때 install 하고 시작

2. dotenv import 방식 수정 >> 안됨!

// 원래 코드
const dotenv = require('dotenv');
dotenv.config();

// 수정1
require('dotenv').config();

// 수정2 (index.js와 .env 파일이 같은 위치)
const dotenv = require('dotenv');
dotenv.config({ path: '.env' });

 

3. useNewUrlParser 등 추가 >> 안됨!!!!!

// 수정1
mongoose.connect(config.DB,{ useNewUrlParser: true }));

// 수정2
mongoose
  .connect(DB, {
    usenewurlparser: true,
    useunifiedtopology: true,
  })
  .then(() => {
    console.log("Successfully connected ");
  })
  .catch((error) => {
    console.log(`can not connect to database, ${error}`);
  });

 

 

4. uri 받아오는 법 수정 >> 여기서 이상함을 느낌

const db = process.env.MONGO || 'test'    
    
mongoose.connect(db, {
      useNewUrlParser: true,
      useUnifiedTopology:true,
      useCreateIndex: true
    }).then(()=>{
      console.log("conected to mongodb");
    }).catch(error => {
      console.log("mongo error",error);
    })

 

.env에서 uri 값 자체가 안넘어 왔다.

console.log를 찍어보면 계속 'test'가 찍혔다.

해당 글에서 어떤 사람은 dotenv가 계속 값이 안넘어 와서 그냥 값을 그대로 썼다고 하던데 죽어도 그렇게 쓰기는 싫었다.(ㅠㅠ db 아이디랑 비밀번호가 다 털리게 되는건데..)

 

 

그래서 다시 스택 오버플로우를 뒤지다가

 

이런 답변을 봤다.

 

그대로 따라했더니

console.log(require('dotenv').config())

이렇게 오류가 떠서 설마 절대 경로 위치가 틀렸다 했더니 정답이었다..........

 

 

그래서 결론적으로 수정 코드는 아래와 같다!!!!

// index.js는 server/src 폴더 안에, .env는 server 폴더 안에 있다.
require('dotenv').config({ path: '../.env' });

 

남들은 .config()만 해도 잘 찾아오던데 나는 경로를 써줬어야 찾아오는거였다.

.env 파일을 index.js와 같은 위치에 놓았을때도 값을 못찾아왔는데......

절대 경로를 제대로 못 써서 3시간 삽질한거 같다.

분명히 잘 기억하고 있다 했는데 부끄럽다 (,,ᴗ ᴗ,,) ⁾⁾

반응형
Comments