스파르타코딩클럽/과제
[Next.js/Typescript] LOL_Dex: NextJS에서 환경변수 사용하기
myinfo7091
2024. 12. 19. 05:02
구현 목표
환경변수를 설정해서 API key를 사용한다.
문제점: Next.js 환경변수 설정 오류
Next.js 환경변수를 설정했지만 undefined로 표시되거나 제대로 읽히지 않았다. 클라이언트 측 코드에서 환경변수를 접근하려 할 때 값이 설정되지 않는 문제라도 있는 것일까?
NextJS에서 환경변수 .env 사용하는 방법
NextJS는 기본적으로 환경 변수를 지원하고 있으며, 사용하기가 매우 쉽습니다. 환경 변수가 필요한 이유 환경 변수가 필요한 이유는 우리가 웹 애플리케이션을 만들 때 개발 모드(development mode)와
cpro95.tistory.com
원인 파악: 환경변수 접두사
클라이언트에서 접근하려면 환경변수 이름에 NEXT_PUBLIC_ 접두사가 꼭 필요하다고 한다. 슬랙 공지를 통해서도, 발제 체크리스트에도 올라와 있던 내용인데 뒤늦게 읽는 바람에 한참 동안 코드를 바라보고만 있어야 했다.
# 클라이언트 및 서버에서 접근 가능
NEXT_PUBLIC_API_KEY=your_public_api_key
# 서버에서만 접근 가능
API_SECRET_KEY=your_api_key
- 환경변수 접두사
클라이언트 측에서 접근하기 위해 환경변수 이름에는 NEXT_PUBLIC_ 접두사가 필요하며, 이것이 없는 환경변수는 서버 사이드에서만 접근 가능하다. - 환경변수 파일명
환경변수가 정의된 파일이 올바르지 않은 경우 문제가 생길 수 있다. - 환경변수 적용 시점
환경변수를 수정하거나, 추가한 후에는 Next.js 개발 서버를 재시작해주어야 한다.
수정한 코드
- 올바른 파일에 환경변수 추가
.env.local 파일에 환경변수를 정의하고, 클라이언트에서 접근하는 경우에 맞게 NEXT_PUBLIC_을 추가한다.
// 클라이언트 측에서 접근하는 경우의 예시
export default function Home() {
const publicApiKey = process.env.NEXT_PUBLIC_API_KEY;
return <div>API 키: {publicApiKey}</div>;
}
요약
- 발생한 문제
환경변수 접두사를 제대로 사용하지 않아 클라이언트 코드에서 접근 실패 - 해결 방법
클라이언트 코드에서 접근할 때 NEXT_PUBLIC_을 붙인 변수 사용 - 결과
이제 환경변수 설정 시 발생하는 문제를 이해하고 해결할 수 있다.