포시코딩

[Sequelize] config 파일에서 dotenv를 읽지 못하는 문제 본문

Node.js

[Sequelize] config 파일에서 dotenv를 읽지 못하는 문제

포시 2022. 12. 21. 11:58
728x90

문제 발견

/config/config.json에서 dotenv를 못쓰는 관계로

/config/config.js로 Javascript 파일을 만들어 dotenv를 적용해 사용하게 되었다.

DB 관련 정보는 일부러 지운 뒤 찍은 사진

근데 이전에 만들어놓은 model을 사용해 User.create()은 잘 되는데, 

 

새로운 테이블을 만들기 위해 아래 명령어를 실행하면 env 파일 값을 읽지 못해 에러가 발생하고 있었다.

npx sequelize db:migrate

 

원인 파악

파일 위치 때문에 못읽어오는건가 싶어

기존에 npx sequelize 명령어를 실행하던 /sequelize 폴더가 아닌 

.env 파일이 있는 곳에서 명령어를 실행해봐도 해결되지 않았다.

이걸 화면을 원한게 아니야

반대로 .env 파일을 복사해 차례차례 /sequelize 폴더에 넣어서도 실행해보고 /config 폴더에 넣어서도 실행해봤다.

그중, /sequelize 폴더에 있을 때 실행이 되는 것을 확인했다!!

 

문제 해결

결국 npx sequelize 할 때, 파일이 실행되는 /sequelize 폴더에 .env 파일이 없어서 그렇다는건데

그러자니 .env파일을 거기에 두거나, 따로 관리할 수는 없는 법

dotenv를 불러올 때 env파일 위치를 설정하는 법을 기억하고 있어서 일단 테스트 해봤다.

require('dotenv').config({path: '../../.env'});

잘 불러와진다..!

대신 Sequelize model을 쓸 때도 이 config.js를 사용하므로 그 부분에도 문제가 없는지 체크해봤다.

역시 DB와 잘 연동되고 있는것을 확인했다.

 

다행히 해결 방법을 찾는데 오래 걸린거 치고 손쉽게 해결을 할 수 있었는데

같이 고민해주신 분이 path 관련 힌트를 주셔서 그랬던 것 같다.

 

앞으로 비슷한 문제가 생기면 이번 케이스를 떠올리며

제일 먼저 실행 위치와 path에 대해 맞는지 체크를 해야겠다.

728x90