Node.js에서 process.chdir() 메서드는 실행 중인 Node.js 프로세스의 현재 작업 디렉터리(current working directory)를 변경할 때 사용합니다. 이 메서드는 성공적으로 디렉터리가 변경되면 별도의 반환값을 제공하지 않으며, 오류가 발생하거나 작업에 실패한 경우에만 예외(exception)를 던집니다.
예를 들어, 지정한 경로에 해당하는 디렉터리가 실제로 존재하지 않으면 ENOENT 오류와 함께 실패하게 됩니다.
기본 문법
process.chdir(directory)
매개변수
directory – 기존 디렉터리 경로 대신 새롭게 설정하고자 하는 디렉터리의 이름(경로)을 담습니다. 상대 경로 또는 절대 경로 모두 사용할 수 있습니다.
예제 1: 디렉터리 변경 성공 사례
먼저 chdir.js라는 이름의 파일을 생성하고 아래 코드를 복사해 넣습니다. 그다음 다음 명령어로 코드를 실행합니다.
node chdir.js
chdir.js
// process.chdir() 사용법을 보여주는 Node.js 프로그램
// process 모듈 불러오기
const process = require('process');
// 현재 작업 디렉터리 출력
console.log("현재 작업 디렉터리: " + process.cwd());
try {
// 새 디렉터리로 변경
process.chdir('../tutorialspoint');
console.log("변경된 작업 디렉터리: " + process.cwd());
} catch (err) {
// 오류 발생 시 출력
console.error("디렉터리 변경 중 오류 발생: " + err);
}실행 결과
C:\home\node>> node chdir.js 현재 작업 디렉터리: /home/mayankaggarwal/mysql-test 변경된 작업 디렉터리: /home/mayankaggarwal/tutorialspoint
위 결과를 보면 process.chdir('../tutorialspoint') 호출 이후 process.cwd()가 반환하는 경로가 tutorialspoint 디렉터리로 정상적으로 변경된 것을 확인할 수 있습니다.
예제 2: 존재하지 않는 디렉터리로 변경 시 오류 처리
이번에는 존재하지 않는 경로로 디렉터리를 변경하려 할 때 어떻게 오류가 발생하는지 살펴보겠습니다.
// process.chdir()의 오류 처리를 보여주는 Node.js 프로그램
// process 모듈 불러오기
const process = require('process');
try {
// 존재하지 않는 디렉터리로 변경 시도
process.chdir('../not/tutorialspoint');
console.log("새 디렉터리가 성공적으로 변경되었습니다");
} catch (err) {
// 오류 발생 시 출력
console.error("디렉터리 변경 중 오류 발생", err);
}실행 결과
C:\home\node>> node chdir.js
디렉터리 변경 중 오류 발생 { Error: ENOENT: no such file or directory,
chdir '../not/tutorialspoint'
at process.chdir (internal/process/main_thread_only.js:31:12)
at Object.<anonymous> (/home/mayankaggarwal/mysql-test/process.js:9:9)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
errno: -2,
code: 'ENOENT',
syscall: 'chdir',
path: '../not/tutorialspoint' }정리
process.chdir()는 간단하지만 강력한 메서드입니다. 사용 시 주의할 점은 다음과 같습니다.
- 성공 시 반환값이 없으므로, 변경 여부를 확인하려면
process.cwd()를 함께 활용하는 것이 좋습니다. - 존재하지 않는 경로를 지정하면
ENOENT오류가 발생하므로, 반드시try...catch문> 블록으로 감싸 오류를 처리하는 것이 안전합니다. - 멀티스레드 환경에서는 워커 스레드마다 자체적인 작업 디렉터리 개념이 적용될 수 있으므로 주의가 필요합니다.