웹사이트 검색

Node.js에서 __dirname을 사용하는 방법


소개

__dirname은 현재 실행 중인 파일이 포함된 디렉토리의 절대 경로를 알려주는 환경 변수입니다.

이 기사에서는 Node.js 프로젝트에서 __dirname을 구현하는 방법을 살펴봅니다.

전제 조건

이 자습서를 완료하려면 다음이 필요합니다.

  • Node.js에 대한 일반적인 지식. Node.js에 대해 자세히 알아보려면 Node.js로 코딩하는 방법 시리즈를 확인하세요.

이 튜토리얼은 Node.js v17.2.0 및 npm v8.2.0에서 검증되었습니다.

1단계 - 프로젝트 설정

이 자습서에서는 다음 샘플 디렉터리 구조를 사용하여 __dirname이 작동하는 방식을 살펴봅니다.

dirname-example
  ├──index.js
  ├──public
  ├──src
  │  ├──helpers.js
  │  └──api
  │      └──controller.js
  ├──cronjobs
  │  └──hello.js
  └──package.json

터미널에 dirname-example 디렉토리를 생성하여 시작할 수 있습니다.

  1. mkdir dirname-example

프로젝트 디렉터리로 이동합니다.

  1. cd dirname-example

Node.js 프로젝트로 초기화합니다.

  1. npm init --yes

이제 실험할 디렉터리와 파일을 만듭니다.

2단계 — __dirname 사용

__dirname을 사용하여 파일이 있는 디렉토리를 확인할 수 있습니다.

src 디렉토리의 api 하위 디렉토리에서 controller.js를 만들고 편집합니다.

console.log(__dirname)      // "/Users/Sam/dirname-example/src/api"
console.log(process.cwd())  // "/Users/Sam/dirname-example"

그런 다음 스크립트를 실행합니다.

  1. node src/api/controller.js

cronjobs 디렉터리에서 hello.js를 만들고 편집합니다.

console.log(__dirname)     // "/Users/Sam/dirname-example/cronjobs"
console.log(process.cwd()) // "/Users/Sam/dirname-example"

그런 다음 스크립트를 실행합니다.

  1. node cronjobs/hello.js

__dirname은 어떤 파일을 콘솔로 내보내느냐에 따라 다른 값을 가집니다. process.cwd() 메서드도 값을 반환하지만 대신 프로젝트 디렉터리를 반환합니다. __dirname 변수는 항상 파일이 있는 절대 경로를 반환합니다.

3단계 - 디렉터리 작업

이 섹션에서는 __dirname을 사용하여 새 디렉토리를 만들고 가리키고 새 파일을 추가하는 방법을 살펴봅니다.

새 디렉토리 만들기

index.js 파일에 새 디렉터리를 만들려면 __dirnamepath.join()의 첫 번째 인수로 삽입하고 두 번째로 새 디렉토리:

const fs = require('fs');
const path = require('path');
const dirPath = path.join(__dirname, '/pictures');

fs.mkdirSync(dirPath);

이제 __dirname을(를) 절대 경로로 포함하는 mdirSync() 메서드를 호출한 후 pictures라는 새 디렉터리를 만들었습니다.

디렉토리 가리키기

또 다른 고유한 기능은 디렉토리를 가리키는 기능입니다. index.js 파일에서 변수를 선언하고 __dirname 값을 path.join()의 첫 번째 인수로 전달합니다. 두 번째로 정적 파일을 포함하는 디렉토리:

express.static(path.join(__dirname, '/public'));

여기서는 정적 파일이 포함된 public 디렉토리를 가리키도록 __dirname을 사용하도록 Node.js에 지시합니다.

디렉토리에 파일 추가

기존 디렉토리에 파일을 추가할 수도 있습니다. index.js 파일에서 변수를 선언하고 첫 번째 인수로 __dirname을 포함하고 두 번째로 추가하려는 파일을 포함합니다.

const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '/pictures');

fs.openSync(filePath, 'hello.jpeg');

openSync() 메서드를 사용하면 파일이 디렉터리에 없으면 파일이 추가됩니다.

결론

Node.js는 디렉토리를 만들고 가리키는 방법을 제공합니다. 그리고 모듈식 환경 변수를 사용하여 기존 디렉터리에 파일을 추가합니다.

자세한 내용은 Express.js 프레임워크의 __dirname을 확인하세요.