반응형

🤔 require()에 대해 알아보자

require()는 Node.js에서 외부 모듈(라이브러리), 로컬 파일, JSON 데이터 등을 불러올 때 사용하는 함수이다. Node.js는 기본적으로 CommonJS 모듈 시스템을 따르며, require()는 해당 방식의 대표적인 모듈 호출 방법이다.

 

🔍 코드 분석

index.js의 코드를 살펴보자.

const express = require('express'); // Express 모듈 사용
const app = express(); // app이라는 새로운 Express 앱 만듦

const mongoose = require('mongoose'); // Mongoose ODM 모듈 불러오기
const bodyParser = require('body-parser'); // HTTP 요청 본문(body) 파싱하는 미들웨어 불러오기
const cookieParser = require('cookie-parser'); // 쿠키를 읽고 파싱하는 미들웨어 불러오기

이 코드에서 사용하는 모든 모듈은 node_modules 폴더에 설치되어 있어야 하며, require()는 해당 경로부터 모듈을 탐색한다.

require()는 Node.js가 내부적으로 node_modules 폴더부터 탐색한다.
예: node_modules/express/index.js 등

📁 Node.js가 모듈을 찾는 순서

예를 들어 require('express')를 실행하면 Node.js는 다음 순서로 파일을 찾는다.

  1. node_modules/express/index.js
  2. node_modules/express/package.json → main 항목 확인
  3. node_modules/express/index.json or .node (특수 바이너리)
  4. 못 찾으면 에러 발생 (MODULE_NOT_FOUND)

 

🤔 import 방식에 대해 알아보자

import는 ES6에서 도입된 ESM 시스템의 문법이다. Node.js는 원래 CommonJS 기반이지만, 현재는 ESM도 공식적으로 지원하고 있다.

🔍 코드 분석

ESM 방식은 정적으로 모듈을 불러오며, 모듈 구조를 컴파일 시점에 분석할 수 있다는 장점이 있다. 브라우저와 호환성이 좋아, TypeScript, React, Next.js 등에서 주로 사용한다.

import express from 'express';

Node.js에서 ESM을 사용하려면 다음 중 하나의 설정이 필요하다.

  1. package.json"type": "module" 설정
  2. 파일 확장자를 .mjs로 변경

 

🧠 What I Learned

Node.js에서 처음으로 require()를 사용하면서 단순히 모듈을 불러오는 방식이라고만 생각하며 import와는 어떤 차이점이 있는지 궁금했다.
이번 정리를 통해 Node.js가 기본적으로 CommonJS를 기반으로 작동한다는 점, 그리고 ES6 이후 등장한 import 방식은 정적 로딩을 기반으로 하며 별도의 설정이 필요하다는 점을 알았다.

반응형

+ Recent posts