...
__dirname 와 __filename
노드에서는 모듈 관계가 있는 경우가 많아 현재 파일의 경로나 파일명을 알아야 하는 경우가 많다.
노드는 __filename, __dirname 이라는 키워드로 경로에 대한 정보롤 제공한다.
파일에 __filename, __dirname 변수를 넣어두면 실행시 현재 파일명과 파일 경로로 바뀐다.
아래 에제의 js 파일의 위치는 /Users/ano/temp/directory.js 이다.
// file 명을 포함한 절대경로
console.log(__filename); // C:/Users/ano/temp/directory.js
// file 명을 제외한 절대 경로
console.log(__dirname); // C:/Users/ano/temp
__dirname 와 process.cwd()
process.cwd()는 node명령을 호출한 작업디렉터리의 절대경로이다
만일 C 디렉토리에서 노드 실행명령을 경로를 통해 주게 된다면,
C: > node Users/ano/temp/directory.js
// __dirname은 현재 실행하는 파일의 절대경로이다
console.log(__dirname); // C:/Users/ano/temp
// process.cwd()는 node명령을 호출한 작업디렉터리의 절대경로이다
console.log(process.cwd()); // C:
경로를 나눈 이유 🔥
cmd에서 서버를 실행할 js파일 위치에 따라서 상대경로가 달라지기 때문이다.
우리는 보통 절대경로가 아닌 상대경로 기준으로 ./파일.js 로 src를 불러오기 때문에,
상대경로가 달라지면, 파일을 못불러와 404 에러를 낼수 있다.
ch4에 있는 파일을 실행하기 위해 경로를 주어 실행하였다.
하지만 노드실행 경로는 NODE이기 때문에, 상대경로는 NODE를 기준으로 잡히게 된다.
이때 __dirname을 써서 파일실행 경로를 기준으로 잡아줘야 한다.
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.