반응형
Node.js에서 다른 디렉토리에 있는 모듈을 불러올 때는 상대 경로 설정과 절대 경로를 설정하는 두 가지 방식이 있다.
1. 폴더 구조
폴더와 파일 구조가 다음과 같을 때, auth.js와 index.js에서 user.js에 정의된 User를 불러오는 방법에 대해 알아보자.
- model/user.js : DB 스키마, User 모델 정의
- middleware/auth.js : 로그인 인증 미들웨어
- middleware/admin.js : 관리자 권한 체크 미들웨어
- index.js : 서버 실행 및 라우팅 진입점
2. user.js에서 User 모델 export하기
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
email: String,
password: String,
role: { type: Number, default: 0 } // 0: 일반, 1: 관리자
});
const User = mongoose.model("User", userSchema);
// 다른 파일에서 require 할 수 있도록 export
module.exports = User;
module.exports = User;
로 내보내면require()
로 그대로 불러올 수 있다.
3. 상대경로(require)로 불러오기
(1) auth.js 파일에서 User 불러오기
const User = require("../model/user");
- ..는 현재 middleware 폴더에서 상위 디렉토리(project/)로 이동하는 것을 의미한다.
- 그 다음 model/user.js로 접근한다.
(2) index.js 파일에서 User 불러오기
const User = require("./model/user");
- index.js 기준 같은 경로(./)의 model 폴더를 찾는다.
🔖
./file → 현재 디렉토리 기준
../file → 상위 디렉토리 기준
4. 절대경로로 불러오기
상대경로는 편리하지만, 깊은 디렉토리 구조에서는 ../../../model/user
와 같이 의미파악에 어려움이 있을 수 있다. 이런 경우는 절대경로를 써서 가독성을 높인다.
(1) Node 기본 절대경로
const User = require("/Users/yourname/project/model/user");
- 루트 디렉토리부터 절대경로로 지정한다.
- PC환경마다 루트가 다르기 때문에 프로젝트에서는 잘 쓰이지 않는다.
(2) path
모듈 활용
const path = require("path");
const User = require(path.resolve(__dirname, "../model/user"));
- __dirname → 현재 파일이 위치한 디렉토리 절대경로이다.
- path.resolve() 로 항상 절대경로를 얻을 수 있다.
반응형
'JavaScript' 카테고리의 다른 글
express, nodemon 설치 및 사용하기 (4) | 2025.07.29 |
---|---|
Node.js 모듈 시스템 이해하기 – require()와 import 비교 (1) | 2025.07.28 |
npm run start vs npm start (1) | 2025.05.22 |
🔖 자바스크립트 자료형과 형 변환 - 한 입 크기로 잘라먹는 리액트 1장을 읽고 (2) | 2025.05.06 |
🔖 자바스크립트 변수와 상수 - 한 입 크기로 잘라먹는 리액트 1장을 읽고 (1) | 2025.05.01 |