브라우저 환경에 전역 객체 window가 있다면, Node.js 환경에는 global 객체가 존재합니다. Node.js는 스크립트가 실행될 때마다 파일 경로, 운영체제 정보, 환경 변수 등 개발에 필수적인 정보들을 process 객체나 전역 변수 형태로 기본 제공합니다. 특히 파일 경로를 다룰 때는 __dirname과 process.cwd()의 미묘한 차이를 정확히 구분해야 경로 에러를 피할 수 있습니다.
package.json에 "type": "module"을 설정한 ES Modules (ESM) 환경에서는 __dirname과 __filename 전역 변수를 사용할 수 없습니다. ESM에서는 대신 import.meta.url 객체를 파싱하여 파일 및 디렉토리 경로를 직접 구해야 합니다.
| 이름 | 역할 및 설명 |
|---|---|
| process | 현재 실행 중인 Node.js 프로세스에 대한 정보와 제어를 제공하는 전역 객체입니다. ex: process.env(환경변수), process.exit()(종료) |
| __dirname | 현재 실행 중인 스크립트 파일이 위치한 디렉토리의 절대 경로 문자열입니다. |
| __filename | 현재 실행 중인 스크립트 파일의 이름까지 포함된 절대 경로 문자열입니다. |
| console | 브라우저의 콘솔과 유사하게 stdout/stderr 표준 출력 스트림으로 로그를 출력하는 내장 객체입니다. |
| global | Node.js의 최상위 전역(Global) 네임스페이스 객체입니다. (브라우저의 window 객체와 동일한 위상) |
루트 폴더(/projects/my-app)에서 src/utils/logger.js 파일을 실행했을 때, 각 전역 변수들이 정확히 어떤 경로를 반환하는지 터미널 출력 결과로 확인해 보세요.