
⛔문제
다음과 같이 mongoDB에 파일을 보낼 js파일을 만들었습니다.
//index.js중 일부
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect(`mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}@cluster0.pso4lve.mongodb.net/?retryWrites=true&w=majority`,
function (err, client) {
if (err) {
return console.log(err)
}
db = client.db('todoApp');
db.collection('post').insertOne({title: '고양이 밥주기', data: '12월25일'}, function (err, result) {
console.log('저장완료');
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
});
})
같은 경로에 env파일을 만들었습니다
MONGODB_USER_ID=leewang
MONGODB_USER_PW=PW

이 상태로 실행을 하니 서버가 열리는게 오류가 발생했습니다.
❓오류코드
MongoServerError: bad auth : Authentication failed.
at Connection.onMessage (D:\Code\codingApple\nodejs\node_modules\mongodb\lib\cmap\connection.js:230:30)
at MessageStream.<anonymous> (D:\Code\codingApple\nodejs\node_modules\mongodb\lib\cmap\connection.js:61:60)
at MessageStream.emit (node:events:513:28)
at processIncomingData (D:\Code\codingApple\nodejs\node_modules\mongodb\lib\cmap\message_stream.js:125:16)
at MessageStream._write (D:\Code\codingApple\nodejs\node_modules\mongodb\lib\cmap\message_stream.js:33:9)
at writeOrBuffer (node:internal/streams/writable:391:12)
at _write (node:internal/streams/writable:332:10)
at MessageStream.Writable.write (node:internal/streams/writable:336:10)
at TLSSocket.ondata (node:internal/streams/readable:754:22)
ok: 0,
code: 8000,
codeName: 'AtlasError',
connectionGeneration: 0,
[Symbol(errorLabels)]: Set(2) { 'HandshakeError', 'ResetPool' }
}
✅해결과정
console.log로 env파일의 값이 잘 넘어 오는지 확인했습니다.
console.log(process.env.MONGODB_USER_ID)
오류는 여전히 있었고, 출력은 undefined가 나왔습니다.
정상적으로 넘어오지 않는다는것을 알아내고 검색을 했습니다.
https://spiralmoon.tistory.com/entry/Nodejs-env-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98
[Node.js] .env 환경변수
▶ 주제 : .env 환경변수 Node.js에서 프로그래밍에 필요한 값들을 서술할 수 있는 .env 환경변수 파일에 대하여 알아보자. ▶ 예시 Node.js에서는 프로젝트 디렉토리에 .env라는 이름의 파일이 존재하
spiralmoon.tistory.com
해당 블로그를 통해 dotenv가 있어야 정상적으로 env가 실행 될수 있다는 것을 알아냈고, dotenv를 install하고 정상적으로 가져오기 위한 코드를 작성했습니다.
const dotenv = require('dotenv')
dotenv.config();
[nodemon] restarting due to changes...
[nodemon] starting `node index.js`
Example app listening on port 3001
저장완료
🌟결론
env를 사용시 auth오류가 뜰 경우 dotenv 라이브러리를 통해 오류를 해결해 보자~❕
'정보 > 오류노트' 카테고리의 다른 글
| [git] add 오랜 시간 소요 (0) | 2022.12.17 |
|---|