요점
Node.js에서 __dirname
항상 현재 실행중인 스크립트가있는 디렉토리입니다 ( 참조 ). 사용자가 입력 그래서 만약 __dirname
에 /d1/d2/myscript.js
, 값이 될 것이다 /d1/d2
.
반대로 and와 같은 라이브러리를 사용할 때 터미널 창에서 명령 .
을 실행 한 node
디렉토리 (예 : 작업 디렉토리)를 제공합니다 . 기술적으로 작업 디렉토리로 시작하지만을 사용하여 변경할 수 있습니다 .path
fs
process.chdir()
.
와 함께 사용하는 경우는 예외입니다 require()
. 내부 경로 require
는 항상에 대한 호출이 포함 된 파일을 기준으로합니다 require
.
예를 들어 ...
디렉토리 구조가
/dir1
/dir2
pathtest.js
그리고 pathtest.js
포함
var path = require("path");
console.log(". = %s", path.resolve("."));
console.log("__dirname = %s", path.resolve(__dirname));
그리고 당신은
cd /dir1/dir2
node pathtest.js
당신은 얻을
. = /dir1/dir2
__dirname = /dir1/dir2
작업 디렉토리는 /dir1/dir2
그렇게 .
해결됩니다. 이후 pathtest.js
에 위치하는 /dir1/dir2
그 무엇의 __dirname
뿐만 아니라 결의에.
그러나 스크립트를 /dir1
cd /dir1
node dir2/pathtest.js
당신은 얻을
. = /dir1
__dirname = /dir1/dir2
이 경우 작업 디렉토리가 해결 /dir1
되었으므로 여전히 해결됩니다 ..
__dirname
/dir1/dir2
.
내부 사용 require
...
내부의 경우, dir2/pathtest.js
당신은이 require
에 전화를 내부 파일을 포함 dir1
당신은 것입니다 항상 할
require('../thefile')
내부 경로 require
는 항상 경로 를 호출하는 파일과 관련이 있기 때문 입니다. 작업 디렉토리와 관련이 없습니다.