Skip to content
On this page

노드 내장 객체 알아보기

global

전역객체이므로 모든 파일에서 접근할 수 있습니다.

require 함수도 global.require에서 global이 생략된 것이고 console 객체도 원래는 global.console입니다.

window 객체와 globalThis

node.js에서 window 객체는 전역객체가 아니라서 DOM(Document Object Model)이나 BOM(Browser Object Model)을 사용할 수 없습니다.

런타임 환경에 따라 다른 전역객체를 참조하려면 globalThis 키워드를 적용하면 됩니다.

console

console도 node.js에서는 global 객체 안에 들어 있고 관련 메서드들을 일부 살펴보면 다음과 같습니다.

  • console.time(레이블): 같은 레이블을 가진 time과 timeEnd 사이의 시간을 측정합니다.
js
console.time("시간측정");
// ...
console.timeEnd("시간측정"); // 여기서 시간이 출력됩니다.
  • console.log(내용): 평범한 로그를 콘솔에 출력합니다.

  • console.error(에러내용): 에러를 콘솔에 표시합니다.

  • console.table(배열): 배열의 요소로 객체 리터럴을 넣으면, 객체의 속성들이 테이블 형식으로 표시됩니다.

js
console.table([
  {
    name: "jason",
    birth: 1994,
  },
  {
    name: "goose",
    birth: 1988,
  },
]);
  • console.dir(객체, 옵션): 객체를 콘솔에 표시하기 위한 메서드입니다.

    js
    const obj = {
      outside: {
        inside: {
          key: "value",
        },
      },
    };
    
    console.dir(obj, {
      colors: true,
      depth: 4,
    });
    
  • console.trace(레이블): 에러가 어디서 발생했는지 추적할 때 사용할 수 있습니다.

js
console.trace("error label");

타이머

타이머의 기능을 제공하는 함수인 setTimeout, setInterval, setImmediate는 전역객체 안에 정의된 메서드입니다.

  • setTimeout(콜백함수, 밀리초): 주어진 밀리초 이후에 콜백함수를 실행합니다.
  • setInterval(콜백함수, 밀리초): 주어진 밀리초마다 콜백함수를 반복해서 실행합니다.
  • setImmediate(콜백함수): 콜백함수를 즉시 실행합니다.

위 타이머 함수들은 각 타이머 취소를 위한 아이디를 반환합니다.

  • clearTimeout(아이디)
  • clearInterval(아이디)
  • clearImmediate(아이디)

타이머는 콜백 기반 API이지만 promise 방식으로도 사용할 수 있습니다.

js
import { setTimeout, setInterval } from "timers/promises";

await setTimeout(3_000);

for await (const startTime of setInterval(1_000, Date.now())) {
  console.log("1초마다 실행", new Date(startTime));
}

process

현재 실행되고 있는 node.js 프로세스에 대한 정보를 담고 있는 객체입니다.

js
process.version; // 설치된 node.js 버전
process.arch; // 프로세서 아키텍처 정보
process.platform; // os 플랫폼 정보입니다.
process.pid; // 현재 프로세스의 아이디
process.uptime(); // 프로세스가 시작된 후 흐른 시간
process.execPath; // node.js의 설치경로
process.cwd(); // 현재 프로세스가 실행되는 위치
process.cpuUsage(); // 현재 cpu 사용량

process.env

시스템의 환경변수들을 담고 있는 객체로 process.env는 서비스의 중요한 키를 저장하는 공간으로도 사용됩니다.

한번에 모든 운영체제에 동일하게 넣을 수 있는 방법으로 dotenv가 있습니다.

process.nextTick(콜백)

이벤트 루프가 다른 콜백함수보다 nextTick의 콜백함수를 우선으로 처리하도록 만듭니다.

process.nextTicksetImmediatesetTimeout보다 먼저 실행되는데, 이는 settled promise와 동일한 우선순위로 인식되어 마이크로태스크 큐에서 처리되기 때문입니다.

process.exit(코드)

실행 중인 node.js 프로세스를 종료합니다.

process.exit 메서드는 인수로 코드 번호를 줄 수 있는데 인수를 주지 않거나 0을 주면 정상종료, 1을 주면 비정상 종료를 의미합니다.

js
let i = 1;

setInterval(() => {
  if (i === 5) {
    console.log("종료");
    process.exit();
  }
  console.log(i++);
}, 1_000);