nextjs에서 환경변수 이용하기
nextjs에서 환경변수를 사용할 때 NEXT_PUBLIC
이라는 키워드를 붙이는 방식과 안붙이는 방식으로 나뉜다
일단 요약
클라이언트 사이드 렌더링할 페이지에서 환경변수 쓸 때 = process.env.NEXT_PUBLIC~
서버 사이드 렌더링할 페이지에서 환경변수 쓸 때 = process.env.~
왜? : 클라이언트 사이드 렌더링 페이지는 번들링 타임에서 NEXT_PUBLIC
안붙으면 다 undefined
로 치환됨
NEXT_PUBLIC
클라이언트 렌더링 페이지에서 환경변수를 사용할 경우 NEXT_PUBLIC
을 붙여야한다
nextjs에서 번들링을 할 때 클라이언트 렌더링 페이지의 경우 NEXT_PUBLIC
키워드가 붙어있지 않는 process.env.~
의 경우 undefined
로 강제 치환된다
console.log(process.env.MY_NAME) // 결과 undefined 출력
console.log(process.env.NEXT_PUBLIC_MY_NAME) // 결과 NEXT_PUBLIC_MY_NAME 환경변수의 값 출력
주의 사항
- 클라이언트에게 노출되기에 보안에 주의해야한다(ex : password 같은 중요값은 NEXT_PUBLIC 을 이용하면 안된다)
NEXT_PUBLIC 생략
서버 사이드 렌더링 페이지에서 환경변수를 사용할 경우 NEXT_PUBLIC
안붙이고 사용하면 된다
그러면 동적으로 런타임에서 환경변수를 로드할 수 있다
주의 사항 : 서버 사이드 렌더링일 줄 알고 NEXT_PUBLIC
을 생략했는데 useEffect() 등을 사용해서 의도치않게 Client side로 동작할 수 있음
그렇기 때문에 해당 페이지가 정말로 서버 사이드 렌더링 페이지인지 확실한 검증이 필요함