__filename, __dirname [ node.js 교과서 ]

2023. 4. 10. 15:53node.js

본 게시글은 node.js 교과서 강의를 듣고 정리한 글입니다.

 

- 노드는 __filename, __dirname 이라는 키워드로 경로에 대한 정보를 제공한다.

// filename.js

console.log(__filename);
console.log(__dirname);

실행결과

/Users/yunmun-yeol/Documents/test/filename.js
/Users/yunmun-yeol/Documents/test

- ES 모듈에서는 위의 방법이 작동하지 않는다.

- ES 모듈에서는 import.meta.url 로 경로를 가져올 수 있다.

// filename.mjs

console.log(import.meta.url);
console.log("__filename은 에러");
console.log(__filename);

실행 결과

file:///Users/yunmun-yeol/Documents/test/filename.mjs
__filename은 에러
file:///Users/yunmun-yeol/Documents/test/filename.mjs:5
console.log(__filename);
            ^

ReferenceError: __filename is not defined in ES module scope
    at file:///Users/yunmun-yeol/Documents/test/filename.mjs:5:13
    at ModuleJob.run (node:internal/modules/esm/module_job:193:25)

Node.js v19.6.1