Node.js-1

이담현·2026년 5월 23일

[Node.js] 모듈 내보내기/가져오기 (module.exports & require) & process.argv 정리

📌 오늘 배운 내용

오늘의 핵심 학습 내용은 코드를 깔끔하게 분리하고 재사용할 수 있게 해주는 내보내기(module.exports)와 가져오기 (require()), 그리고 터미널에서 입력을 받을 수 있는 process.argv입니다.


1. 하나의 파일에 모든 코드를 작성하면 생기는 문제점

  1. 가독성 저하: 어디에 어떤 코드가 있는지 찾기 어려워집니다.
  2. 유지보수 지옥: 오류가 났을 때 원인을 찾기 힘듭니다.
  3. 협업 불가: 여러 사람이 한 파일을 동시에 수정하며 함께 작업하기 힘듭니다.
  4. 재사용성 down: 똑같은 코드를 다른 곳에서 또 복사/붙여넣기 해야 합니다.

이러한 문제점을 해결하기 위한 구원투수가 바로 내보내기(module.exports)가져오기 (require()) 입니다


2. 내보내기 (module.exports)

작성한 함수나 변수를 다른 파일에서 쓸 수 있도록 밖으로 꺼내주는 역할입니다.

① 1개의 함수만 내보낼 때

function add(a, b) {
  return a + b;
}

// 하나의 함수만 깔끔하게 내보내기
module.exports = add;

② 여러 개의 함수를 내보낼 때 (ES6 축약 문법)

function add(a, b) { return a + b; }
function subtract(a, b) { return a - b; }
function multiply(a, b) { return a * b; }
function divide(a, b) { return a / b; }
function double(a) { return a * 2; }

// 객체 형태로 묶어서 여러 개를 한 번에 내보내기
module.exports = { add, subtract, multiply, divide, double };

3. 가져오기 (require())

다른 파일에서 내보낸 값을 내 파일로 불러오는 역할입니다. 상황에 따라 통째로 가져오거나, 필요한 것만 쏙쏙 골라 가져올 수 있습니다.

① 객체 전체를 통째로 가져오기

// "./math"는 같은 디렉토리에 있는 math.js 파일을 의미합니다. (.js 생략 가능)
const math = require("./math"); 

console.log(math.add(10, 5)); // 15

② 구조 분해 할당으로 필요한 함수만 쏙 골라 가져오기

// 객체 안에서 원하는 함수만 직접 꺼내서 사용합니다.
const { add, subtract } = require("./math"); 

console.log(add(10, 5)); // 15

⚠️ 주의하기!

  • 구조 분해 할당을 할 때, 원본 파일에 존재하지 않는 값을 가져오려고 하면 undefined가 저장됩니다.
  • 경로를 지정할 때 ./은 현재 디렉토리, ../은 상위 디렉토리를 의미합니다. (경로 표시 누락 주의!)

추가 개념 : process.argv란?

프로그램을 실행할 때 터미널(명령어 창)을 통해 사용자가 전달한 인자(arguments)들을 받아오는 배열입니다.

console.log(process.argv);

알아두어야 할 특징

사용자가 터미널에 입력한 값은 무조건 문자열(string) 형태로 저장돤다.
따라서 숫자로 계산을 해야 한다면 반드시 형변환을 해주어야 한다

  • 숫자로 변환 예시: Number(), + 단항 연산자, parseInt()

process.argv의 인덱스 구조

인덱스의미
argv[0]Node.js 실행 파일의 전체 경로
argv[1]현재 실행한 JS 파일의 전체 경로
argv[2] 이상사용자가 실제로 입력한 값

오늘 느낀점

module.exportsrequire()를 사용할 때 "어느 파일에서 내보내고(export), 어느 파일에서 받아오는지(require)" 혼동하지 않도록 해야겠다.

profile
최고 최선의 코드를 생성하는 개발자

0개의 댓글