2025년에 Node.js에서 .env 파일 읽는 방법 (최신 정보)
Node.js에서 .env 파일 읽는 방법 (2025년 최신 정보) 표지 이미지
애플리케이션 개발에서 환경 변수는 중요한 역할을 합니다.
민감하거나 환경에 따라 달라지는 세부 정보를 하드코딩하지 않고 유연하게 구성할 수 있도록 해주는 것이죠.
Node.js는 사용 중인 버전에 따라 .env 파일을 로드하고 관리하는 다양한 방법을 제공합니다.
이 글에서는 Node.js 버전 20 이상과 미만 모두에 대한 방법과 필요한 경우 사용자 지정 솔루션을 구현하는 방법까지 다루겠습니다.
핵심 요약
- Node.js 20 이상에서는 CLI 또는
process.loadEnvFile()
를 통해 .env 파일 처리를 기본적으로 지원합니다. - Node.js 20 미만에서는
dotenv
를 사용하여 .env 파일을 관리할 수 있습니다. - 사용자 지정 .env 파일 파서는 종속성 없이 유연성을 제공합니다.
Node.js 버전이 20 이상인 경우
Node.js 버전 20 이상에서는 내장된 지원을 활용하여 .env 파일을 로드할 수 있으므로 외부 종속성이 필요하지 않습니다.
다음은 몇 가지 옵션입니다.
- --env-file CLI 매개변수 사용
Node.js v20.6.0부터 --env-file
명령줄 인수를 사용하여 .env 파일을 직접 로드할 수 있습니다.
이를 통해 코드를 수정하지 않고도 process.env
객체에 변수를 주입할 수 있습니다.
.env
파일 생성:
PORT=3000
DB_HOST=localhost
DB_USER=admin
DB_PASSWORD=secret
애플리케이션 실행:
node --env-file=.env app.js
.env
파일에 정의된 변수는 이제 process.env
에서 사용할 수 있습니다.
- process.loadEnvFile() API 사용
Node.js v20.12.0부터 실험적인 process.loadEnvFile()
API를 사용하여 애플리케이션 코드 내에서 .env 파일을 동적으로 로드할 수 있습니다.
예제 사용법:
(async () => {
await process.loadEnvFile('.env');
console.log(`서버는 ${process.env.PORT} 포트에서 실행 중입니다.`);
})();
이 방법은 .env 파일을 로드하는 시점을 프로그래밍 방식으로 제어해야 할 때 특히 유용합니다.
하지만 실험적인 기능이므로 향후 Node.js 릴리스에서 동작이 변경될 수 있습니다.
Node.js 버전이 20 미만인 경우
이전 버전의 Node.js에서는 외부 라이브러리를 사용하거나 .env 파일을 처리하기 위한 자체 로직을 구현해야 합니다.
- dotenv 라이브러리 사용
dotenv
라이브러리는 .env 파일을 관리하는 데 널리 사용되는 솔루션입니다.
모든 Node.js 버전에서 원활하게 작동하며 설정이 간단합니다.
라이브러리 설치:
npm install dotenv
애플리케이션에서 사용:
require('dotenv').config();
console.log(`서버는 ${process.env.PORT} 포트에서 실행 중입니다.`);
.env
파일이 자동으로 로드되고 해당 변수가 process.env
에 추가됩니다.
- 자체 로직 구현
외부 라이브러리를 사용하고 싶지 않다면 .env 파일을 구문 분석하고 process.env
에 로드하는 간단한 함수를 작성할 수 있습니다.
예제 구현:
const fs = require('fs');
const path = require('path');
function loadEnvFile(filePath) {
try {
const resolvedPath = path.resolve(filePath);
const data = fs.readFileSync(resolvedPath, 'utf-8');
data.split(/\r?\n/).forEach((line) => {
const trimmedLine = line.trim();
if (!trimmedLine || trimmedLine.startsWith('#')) return;
const [key, value] = trimmedLine.split('=');
if (key && value !== undefined) {
process.env[key.trim()] = value.trim();
}
});
console.log('환경 변수가 성공적으로 로드되었습니다.');
} catch (error) {
console.error(`Error loading .env file: ${error.message}`);
}
}
// 사용법
loadEnvFile('.env');
console.log(`서버는 ${process.env.PORT} 포트에서 실행 중입니다.`);
이 접근 방식은 .env 파일의 구문 분석 및 처리에 대한 완전한 제어 기능을 제공하므로 고급 사용 사례나 사용자 지정 형식에 유용할 수 있습니다.
자주 묻는 질문
--env-file
과dotenv
의 장점은 무엇인가요?
외부 라이브러리가 필요 없다는 점입니다.
process.loadEnvFile()
이 프로덕션에서 안정적인가요?
아니요.
Node.js v20.12.0+의 실험적인 기능입니다.
- 사용자 지정 .env 형식으로 이러한 방법을 사용할 수 있나요?
사용자 지정 파서만 형식을 완전히 제어할 수 있습니다.
결론
Node.js 버전에 따라 .env 파일을 관리하는 가장 적합한 접근 방식을 선택할 수 있습니다.
- Node.js 20 이상:
- 빠른 로드를 위해
--env-file
CLI 매개변수를 사용합니다. - 동적 프로그래밍 방식으로 제어하려면
process.loadEnvFile()
API를 사용합니다.
- 빠른 로드를 위해
- Node.js 20 미만:
- 신뢰할 수 있고 사용하기 쉬운 지원을 위해 인기 있는
dotenv
라이브러리를 사용합니다. - 사용자 지정 요구 사항이 있는 경우 자체 .env 로더를 구현합니다.
- 신뢰할 수 있고 사용하기 쉬운 지원을 위해 인기 있는
각 방법에는 장점이 있으며, 올바른 방법을 선택하는 것은 프로젝트 요구 사항과 Node.js 버전에 따라 달라집니다.
'Javascript' 카테고리의 다른 글
타입스크립트의 깜짝 비밀: 조건문은 어떻게 타입을 예측할까요? (0) | 2025.03.22 |
---|---|
Framer Motion 사용법: 초보자 가이드 (0) | 2025.03.19 |
Sharp.js - Node.js 최강 이미지 처리 프레임워크 완벽 가이드 (0) | 2025.03.19 |
TypeScript Bottom 타입 never 완벽 분석 – never의 다양한 응용 한눈에 보기 (0) | 2025.03.19 |
TypeScript에서의 Array 타입 표기법: T[] vs. Array<T> 완벽 분석 (0) | 2025.03.19 |