[Node.js] server 에서 .env 파일을 통해 development 와 production 구분하기

STEVELOPER·2023년 2월 21일
0

Node.js

목록 보기
7/9

Node.js 서버를 개발하다보면 개발서버와 배포서퍼를 구분해야한다.
이때 .env 파일을 분리해야하는데,
.env.development
.env.production 과 같이 개발용과 배포용을 구분한다.

React 의 경우 start 로 앱을 실행시킬 경우 .env.development 파일을 참조하고,
build 로 패키징할 경우 .env.production 을 자동으로 참조하였지만

현재 내가 만든 Node.js 서버의 경우 Prisma(ORM) 의 문제인지 build 가 제대로 이루어지지 않아
개발서버를 개발용과 배포용으로 구분해야하는 상황이었다.
이때 .env 를 직접 지정해서 이 문제를 해결할 수 있었는데, 사용한 모듈은
dotenv 이다.

npm install dotenv

dotenv 는 React 에서도 .env 파일에 명시된 변수들을 가져와서 사용하려 할 때 유용하게 쓰이며,
어떤 .env 파일을 사용할 지도 지정할 수 있다.
.env 파일 지정, 이 기능이 현재 서버 환경 분리에 필요한 기능이었다.
서버 실행 로직이 작성돼있는 server.js 를 개발용과 배포용으로 나눈다음
각 파일에 하기 코드를 작성했다.

//server.js (개발)
dotenv.config({path: path.join(__dirname, ".env.development")});
//server_deploy.js (배포)
dotenv.config({path: path.join(__dirname, ".env.production")});

server 파일들과 같은 위치에
.env.development 와 .env.production 파일들을 생성해두고 필요한 값들을 개발, 배포 환경에 맞게 작성해둔다.

이 때 주의할 점은 Node.js 가 기본적으로 .env 파일을 참조하기 때문에 이 두개의 파일을 dotenv 모듈을 통해 어떤 파일을 사용할 것인지 명시해도 참조하지 않는 문제가 발생했었다.
단순히 .env 파일의 이름을 .env_old 처럼 참조하지 못하게 바꾸거나 삭제하는것으로 해결했다.

profile
JavaScript, Node.js, Express, React, React Native, GraphQL, Apollo, Prisma, MySQL

0개의 댓글