노드에서 사용되는 파일들은 단순 파일로서 사용되는 경우뿐만 아니라 모듈로서 관계성을 가지는 경우가 대다수입니다. 당연한 이야기죠? 그래서 특정 모듈(파일)들의 경로나 파일명을 필요로 하는 경우가 종종 발생합니다.
아래와 같이 예제 파일에서 console.log로 __filename과 __dirname을 출력해 보겠습니다. 그럼 특별한 설정 없이 현재의 파일명과 파일 경로를 자동으로 출력해 줍니다.
console.log(__filename);
console.log(__dirname);
/* 출력
X:\XXXXX\XXXXXX\example.js
X:\XXXXX\XXXXXX
*/
물론 윈도우가 아닌 경우 위 예제와 같이 ' / '가 아닌 ' \ '로 경로가 구분이 될 수도 있습니다. 또한 경로의 문자열 반환 등의 이슈도 있기 때문에, 경로와 관련된 처리는 대부분 path 모듈을 통해서 진행합니다. 이는 따로 살펴보도록 하겠습니다.
덧붙여, ES 모듈에서는 이 __filename과 __dirname을 사용하지 못합니다. 그래서 import.meta.url로 경로를 불러옵니다.
console.log(import.meta.url);
console.log('__filename 실행 시 오류');
console.log(__filename);
/* 출력
file:///X:/XXXXX/XXXXXX/example.mjs
__filename 실행 시 오류
Uncaught ReferenceError ReferenceError: __filename is not defined in ES module scope
at <anonymous> (file:///X:/XXXXX/XXXXX/example.mjs:3:13)
at run (node:internal/modules/esm/module_job:218:25)
--- await ---
at runMainESM (node:internal/modules/run_main:98:21)
at executeUserEntryPoint (node:internal/modules/run_main:131:5)
at <anonymous> (node:internal/main/run_main_module:28:49)
Process exited with code 1
*/
다음 아티클부터는 우리가 따로 선언하지 않아도 사용할 수 있었던 require, module 객체와 같은 기본 제공 내장 객체에 대해서 자세히 살펴보도록 하겠습니다.
'Programming > Node.js' 카테고리의 다른 글
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : console (0) | 2024.03.28 |
---|---|
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : global (0) | 2024.03.27 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : 다이나믹 임포트 (0) | 2024.03.22 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : ECMAScript 1 (0) | 2024.03.21 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : CommonJS 5 [require 1] (0) | 2024.03.20 |