Node.js는 Chrome의 V8 엔진을 기반으로 구축된 JavaScript 런타임으로, 서버에서 비동기 이벤트 기반 코드를 실행합니다.
전역 변수
CommonJS의 주요 모듈 수준 전역 변수:
__filename; // 현재 모듈의 절대 파일 경로
__dirname; // 현재 모듈의 절대 디렉터리 경로
자식 프로세스 (Child Processes)
child_process.exec()
프로세스 출력을 버퍼링하고 stdout/stderr를 콜백에 전달합니다 (간단한 스크립트에 적합):
const { exec } = require('child_process');
exec('ls -la | grep .js', (error, stdout, stderr) => {
if (error) {
console.error(`Execution error: ${error.message}`);
return;
}
console.log(`Output: ${stdout}`);
});
child_process.spawn()
버퍼링 없이 프로세스 데이터를 스트리밍합니다 (장기 실행 프로세스 및 대용량 출력에 적합):
const { spawn } = require('child_process');
// 터미널의 stdin/stdout/stderr를 직접 상속
const child = spawn('npm', ['test'], { stdio: 'inherit' });
child.on('error', (err) => {
if (err.code === 'ENOENT') console.error('실행 파일을 찾을 수 없습니다');
if (err.code === 'EACCES') console.error('권한이 거부되었습니다');
});
child.on('exit', (code, signal) => {
console.log(`프로세스가 종료되었습니다. 종료 코드: ${code}`);
});
서식 지정 및 객체 검사 (util.inspect)
const util = require('util');
// 구문 강조와 함께 복합 객체를 깊이 있게 검사
const output = util.inspect(complexObject, {
showHidden: false,
depth: null,
colors: true
});
process.stdout.write(output + '\n');