조각조각 - JSON 파일에서 .env 변수 불러오기

eocode·2023년 3월 9일
0
post-thumbnail

사용되는 경우

MySQL과 시퀄라이즈를 통해 DB를 구축할 때 config/config.json 파일에 DB 비밀번호를 입력해야합니다. 비밀번호를 그대로 입력한다면 github에 올라가기 때문에 .env에 비밀번호를 설정하고 .env를 git에 올라가지 않게 하는것이 보안에 용이합니다. 하지만 json파일에서 .env에 설정된 값을 바로 가져올 수 없습니다.

해결법

.env에서 값을 가져오기 위해 json 파일을 js로 변경하고 json 객체를 export 하는 형태로 코드를 수정, .env 값을 불러와서 사용합니다.

  • 기존 config.json 파일
    {
      "development": {
        "username": "root",
        "password": 비밀번호,
        "database": "seoabooks",
        "host": "127.0.0.1",
        "dialect": "mysql"
      },
      "test": {
        "username": "root",
        "password": 비밀번호,
        "database": "seoabooks",
        "host": "127.0.0.1",
        "dialect": "mysql"
      },
      "production": {
        "username": "root",
        "password": 비밀번호,
        "database": "seoabooks",
        "host": "127.0.0.1",
        "dialect": "mysql"
      }
    }
  • js로 바꾼 config.js 파일
    시퀄라이즈는 commonJS 모듈 시스템을 사용하기 때문에 es6 모듈 시스템인 import 문 사용이 불가능합니다. require을 이용해서 dotenv를 추가해주어야 합니다. (.env에서 DBPW 값을 못가져와서 한참 고민했습니다 ㅠㅠ)
    const dotenv = require('dotenv');
    dotenv.config();

    module.exports = {
      "development": {
        "username": "root",
        "password": process.env.DBPW,
        "database": "seoabooks",
        "host": "127.0.0.1",
        "dialect": "mysql"
      },
      "test": {
        "username": "root",
        "password": process.env.DBPW,
        "database": "seoabooks",
        "host": "127.0.0.1",
        "dialect": "mysql"
      },
      "production": {
        "username": "root",
        "password": process.env.DBPW,
        "database": "seoabooks",
        "host": "127.0.0.1",
        "dialect": "mysql"
      }
    }
profile
프론트엔드 개발자

0개의 댓글