Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

Node.js process.env 완벽 정리: 환경 변수 확인부터 활용까지

process.env란 무엇인가?

Node.js의 process.env는 현재 프로그램이 실행되고 있는 환경 정보를 담은 사용자 환경 객체(user environment object)를 반환합니다. 이 객체에는 셸 종류, 홈 디렉터리, PATH, 언어 설정 등 운영체제와 터미널 세션과 관련된 수십 가지 환경 변수가 키-값 쌍 형태로 저장되어 있습니다.

참고로 process.env는 함수가 아니라 속성(property)입니다. 따라서 괄호 없이 그대로 참조해야 하며, process.env()처럼 호출하면 TypeError가 발생하니 주의하세요.

문법

process.env

매개변수

별도의 입력값이 필요하지 않습니다. 참조하는 즉시 현재 프로세스의 환경 변수 전체를 객체 형태로 반환합니다.

예제 1: 환경 객체 전체 출력하기

아래 내용으로 env.js 파일을 만든 뒤, 터미널에서 node env.js 명령어로 실행해 보세요.

// process.env 사용 예제

// process 모듈 불러오기
const process = require('process');

// 사용자 환경 객체 출력
console.log(process.env);

실행 결과

실제 출력 내용은 실행 환경(OS, 셸, 설치된 프로그램)에 따라 달라집니다. Ubuntu 환경에서 실행한 결과의 일부는 다음과 같습니다.

admin@root:~/node/test$ node env.js
{
  SHELL: '/bin/bash',
  SESSION_MANAGER: 'local/admin:@/tmp/.ICE-unix/2956,unix/admin:/tmp/.ICE-unix/2956',
  QT_ACCESSIBILITY: '1',
  COLORTERM: 'truecolor',
  XDG_CONFIG_DIRS: '/etc/xdg/xdg-ubuntu:/etc/xdg',
  LANGUAGE: 'en_IN:en',
  DESKTOP_SESSION: 'ubuntu',
  SSH_AGENT_PID: '2912',
  PWD: '/home/admin/test',
  LOGNAME: 'admin',
  HOME: '/home/admin',
  USERNAME: 'admin',
  LANG: 'en_IN',
  TERM: 'xterm-256color',
  USER: 'admin',
  DISPLAY: ':0',
  XDG_RUNTIME_DIR: '/run/user/1001',
  PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin',
  GDMSESSION: 'ubuntu',
  DBUS_SESSION_BUS_ADDRESS: 'unix:path=/run/user/1001/bus',
  _: '/usr/bin/node',
  OLDPWD: '/home/admin'
}

위 결과에서 보듯이 LS_COLORS처럼 값이 매우 긴 변수도 있으며, 실제로는 50개가 넘는 환경 변수가 한 번에 출력됩니다.

예제 2: 환경 변수 순회 및 개별 접근

반환된 객체를 반복문으로 순회하거나, 특정 키를 지정해 원하는 값만 골라 확인할 수도 있습니다.

// process.env 사용 예제

// process 모듈 불러오기
const process = require('process');

// process.env 객체 가져오기
let no_env = 0;
const env = process.env;

// 반환된 데이터를 순회하며 출력
for (const key in env) {
  console.log(key + ': ' + env[key]);
  no_env++;
}

// 환경 변수 총 개수 출력
console.log('total no of values available = ' + no_env);

// 필요한 필드에 하나씩 접근
console.log('operating system: ' + env['OS']);
console.log('alluserprofile: ' + env['ALLUSERSPROFILE']);
console.log('public directory: ' + env['PUBLIC']);

실행 결과

admin@root:~/node/test$ node env.js
SHELL: /bin/bash
SESSION_MANAGER: local/admin:@/tmp/.ICE-unix/2956,...
QT_ACCESSIBILITY: 1
COLORTERM: truecolor
...
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:...
GDMSESSION: ubuntu
DBUS_SESSION_BUS_ADDRESS: unix:path=/run/user/1001/bus
_: /usr/bin/node
OLDPWD: /home/admin
total no of values available = 50
operating system: undefined
alluserprofile: undefined
public directory: undefined

Linux(Ubuntu) 환경에는 OS, ALLUSERSPROFILE, PUBLIC 같은 Windows 전용 환경 변수가 존재하지 않기 때문에 마지막 세 줄은 undefined로 출력됩니다. 동일한 코드를 Windows에서 실행하면 해당 값들이 정상적으로 표시됩니다.

실무 활용 팁

  • 특정 변수 접근: process.env.HOME, process.env.PATH처럼 점 표기법으로 바로 읽을 수 있습니다.
  • 타입 주의: 모든 환경 변수는 문자열(string)로 반환됩니다. 숫자로 사용하려면 Number() 변환이 필요합니다.
  • 기본값 처리: 정의되지 않은 변수는 undefined를 반환하므로 process.env.PORT || 3000처럼 기본값을 지정하는 패턴이 유용합니다.
  • 민감 정보 관리: API 키나 비밀번호 같은 설정은 코드에 직접 작성하지 말고 .env 파일과 dotenv 패키지로 관리하는 것이 안전합니다.

마무리

process.env는 Node.js 애플리케이션이 실행 환경의 설정을 읽어오는 가장 기본적인 통로입니다. 서버 포트, 데이터베이스 연결 정보, API 키 등을 환경(개발/배포)별로 다르게 구성할 때 반드시 알아야 하는 핵심 기능이니, 위 예제들을 직접 실행해 보며 익혀두시길 권장합니다.