[node.js] process.cwd ()와 __dirname의 차이점은 무엇입니까?

차이점은 무엇입니까

console.log(process.cwd())

console.log(__dirname);

나는 비슷한 맥락에서 둘 다 사용되는 것을 보았다.



답변

process.cwd() 현재 작업 디렉토리를 반환합니다.

즉, node명령 을 호출 한 디렉토리입니다 .

__dirname JavaScript 소스 코드 파일을 포함하는 디렉토리의 디렉토리 이름을 리턴합니다.


답변

노드 js doc에 따라
process.cwd()

cwd는 전역 객체의 메소드이며 processNode.js 프로세스의 현재 작업 디렉토리 인 문자열 값을 리턴합니다.

노드 js doc에 따라
__dirname

문자열 값으로 현재 스크립트의 디렉토리 이름입니다. __dirname은 실제로 전역이 아니라 각 모듈에 대해 로컬입니다.

예를 들어 설명하겠습니다.

main.js파일이 내부에 C:/Project/main.js
있고 실행 중이라고 가정 합니다.node main.js 두 값을 모두 하면 동일한 파일이 반환 합니다.

또는 단순히 다음 폴더 구조로

Project
├── main.js
└──lib
   └── script.js

main.js

console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project
console.log(__dirname===process.cwd())
// true

script.js프로젝트의 하위 디렉토리에 다른 파일 파일 이 있다고 가정 C:/Project/lib/script.js합니다.node main.js 합니다.script.js

main.js

require('./lib/script.js')
console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project
console.log(__dirname===process.cwd())
// true

script.js

console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project\lib
console.log(__dirname===process.cwd())
// false


답변

각각 의 범위 를 알면 일을 더 쉽게 기억할 수 있습니다.

processnode전역 객체이며 .cwd()노드가 실행중인 위치를 반환합니다.

__dirname이다 module의 속성은, 모듈의 파일 경로를 나타냅니다. 노드에서 하나의 모듈은 하나의 파일에 있습니다.

마찬가지로 모듈의 파일 이름을 보유하는 __filename또 다른 module속성입니다.


답변

$ find proj

proj
proj/src
proj/src/index.js

$ cat proj/src/index.js

console.log("process.cwd() = " + process.cwd());
console.log("__dirname = " + __dirname);

$ cd proj; node src/index.js

process.cwd() = /tmp/proj
__dirname = /tmp/proj/src


답변