질문 : node.js에서 __dirname과 ./의 차이점은 무엇입니까?
Node.js로 프로그래밍하고 현재 디렉토리와 관련하여 어딘가에있는 파일을 참조 할 때 일반 ./
__dirname
변수를 사용하는 이유가 있습니까? 지금까지 내 코드에서 ./을 사용해 왔고 방금 __dirname
의 존재를 발견했으며 본질적으로 내 ./를 변환하는 것이 현명한 지 여부를 알고 싶습니다. 그렇다면 왜 이것이 현명한 지 알고 싶습니다. 생각.
답변
Node.js에서 __dirname
은 항상 현재 실행중인 스크립트가있는 디렉토리입니다 ( this 참조 ). __dirname
에 /d1/d2/myscript.js
을 입력하면 값은 /d1/d2
됩니다.
대조적으로 .
path
및 fs
와 같은 라이브러리를 사용할 때 터미널 창 (예 : 작업 디렉토리)에서 node
명령을 실행 한 디렉토리를 제공합니다. 기술적으로는 작업 디렉토리로 시작하지만 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
됩니다.
dir2/pathtest.js
dir1
내부에 파일을 포함 require
호출이 있으면 항상 수행 할 것입니다.
require('../thefile')
require
내부의 경로는 항상 호출하는 파일에 상대적이기 때문입니다. 작업 디렉토리와 관련이 없습니다.
출처 : https://stackoverflow.com/questions/8131344/what-is-the-difference-between-dirname-and-in-node-js
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
클릭시 HTML 텍스트 입력의 모든 텍스트 선택 (0) | 2021.06.26 |
---|---|
Node.js를 사용하려면 ES6 import / export가 필요합니다. (0) | 2021.06.25 |
JavaScript를 통해 오디오를 재생하는 방법 (0) | 2021.06.25 |
파일이 예외없이 존재하는지 확인하는 방법 (0) | 2021.06.24 |
CSS 상자 그림자 하단만 보이기 (0) | 2021.06.24 |