Node 내장 객체 (2) - process

김무연·2023년 12월 11일

Backend

목록 보기
15/49

노드는 파일 시스템에 접근할 수 있었던 것처럼 process 명령어로 운영체제에도 접근이 가능합니다

process.env

시스템 환경 변수들이 들어있는 객체

  • 비밀키(데이터베이스 비밀번호, 서드파티 앱 키 등)를 보관하는 용도로도 쓰임
  • 환경 변수는 process.env 로 접근 가능
// 직접 비밀번호나 ID를 적는것이 아닌 아래의 코드로 해서 비밀 보장
const secredID = process.env.SECRET_ID;
const secretCode = process.env.SECRET_CODE; 
  • 일부 환경 변수는 노드 실행 시 영향을 미침
NODE_OPTIONS = --max-old-space-size=8192
UV_THREADPOOL_SIZE=8

process.nextTick(콜백) == 새치기

이벤트 루프가 다른 콜백 함수들보다 nextTick의 콜백 함수를 우선적으로 처리함

  • 너무 남용하면 다른 콜백 함수들 실행이 늦어질 수도 있으니 주의
  • 비슷한 경우로 promise가 있음 (nextTick처럼 우선순위가 높음)
  • 아래 코드에서 setImmediate, setTimeout 보다 promise와 nextTick이 먼저 실행됨
setImmediate(() => {
  console.log('immediate');
});
process.nextTick(() => {
  console.log('nextTick');
});
setTimeout(() => {
  console.log('timeout');
}, 0);
Promise.resolve().then(() => console.log('promise'));

//
nextTick
promise
timeout
immediate

nextTick, promise 처럼 우선 순위가 있는 놈들 사이는 차례대로 순서임

process.exit(코드)

현재의 프로세르를 멈춤

  • 코드가 없거나 0이면 노드 프로그램 자체를 종료
  • 이외의 코드는 비정상 종료를 의미함
  • 예를 들면 서버를 끄고 싶을 때 process.exit로 프로그램, 서버를 아예 꺼버림
let i = 1;
setInterval(() => {
  if (i === 5) {
    console.log('종료!');
    process.exit();
  }
  console.log(i);
  i += 1;
}, 1000);

0이면 정상으로 꺼지고, 1이면 에러가 나면서 꺼진다는 뜻인데, 이를 이용해서 에러메시지를 출력해주고 서버를 꺼지게 하는 등으로 이용 가능

profile
Notion에 정리된 공부한 글을 옮겨오는 중입니다... (진행중)

0개의 댓글