Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- CPU 스케줄링
- react-redux
- 코드업
- 토이프로젝트
- 프로그래머스
- memory
- 알고리즘
- 분할메모리할당
- 파이썬
- web
- 정렬
- 백준
- 기초100제
- 타입스크립트
- 리덕스장바구니
- error
- 스프링
- Spring
- 공부
- codeup
- Redux
- C++
- 자료구조
- Operating System
- js to ts
- 일상
- react
- Java
- 협업
- OS
Archives
- Today
- Total
감자튀김 공장🍟
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