[ Node.js ] Express 라이브러리 사용하기(IntelliJ)
2025. 1. 28. 17:16ㆍSTUDY/Node.js
Express ?
Node.js 환경에서 사용되는 웹 애플리케이션 프레임워크
웹 서버를 쉽게 구축할 수 있도록 도와주는 도구
인텔리제이를 실행시킨 뒤 [NEW PROJECT] 버튼을 눌러준다
Generators에서 Express 를 선택해 주고
프로젝트 이름을 입력하고
View Engine을 EJS로 설정해 준다
(기본값은 Pug(Jade)로 설정되어 있었는데 나는 익숙하지가 않아 EJS로 해줬다)
[CREATE]를 눌러주면
이렇게 자동으로 프로젝트가 생성되는데
package.json 파일도 자동으로 생성된다 (intellij 짱)
✅ 설명: package.json
- 프로젝트의 정보 저장
- 의존성 관리
- 스크립드 정의
- 프로젝트의 시작 및 빌드 설정
- 배포 및 버전 관리
등 프로젝트의 빌드 및 실행환경, 다양한 패키지를 관리하는데 필요함
[ app.js ]
const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use((err, req, res, next) => {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
✅ 설명: 모듈 가져오기
- http-errors: HTTP 오류 상태 코드(예: 404, 500 등)를 생성하는 모듈
- express: Express.js는 Node.js에서 사용되는 웹 프레임워크로, 서버를 설정하고 요청을 처리하는 데 필요한 기능을 제공
- path: 파일 및 디렉토리 경로를 처리하는 내장 모듈
- cookie-parser: 요청에 포함된 쿠키를 파싱하는 미들웨어
- morgan: HTTP 요청 로그를 기록하는 미들웨어
✅ 설명: View 엔진 설정
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
- app.set('views', ...): 템플릿 파일이 저장될 디렉토리 위치를 설정
- app.set('view engine', 'ejs'): EJS(Embedded JavaScript) 템플릿 엔진을 사용하도록 설정
✅ 설명: 미들웨어 설정
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
- app.use(logger('dev')): morgan을 사용하여 HTTP 요청 로그를 개발용으로 출력
- app.use(express.json()): 클라이언트가 보낸 JSON 형식의 데이터를 파싱하는 미들웨어
- app.use(express.urlencoded({ extended: false })): URL-encoded 데이터를 파싱하는 미들웨어
- app.use(cookieParser()): 요청에서 쿠키를 파싱하여 req.cookies에 저장
- app.use(express.static(path.join(__dirname, 'public'))): public 디렉토리 안에 있는 정적 파일(css, js, 이미지 등)을 클라이언트가 접근할 수 있도록 설정
✅ 설명: 라우터 설정
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
app.use('/', indexRouter);
app.use('/users', usersRouter);
- app.use('/', indexRouter): 기본 URL(/)에서 요청을 처리할 해당 라우터로 연결
- app.use('/users', usersRouter): /users 경로로 시작하는 요청을 처리할 라우터로 **usersRouter**를 설정
✅ 설명: 404 에러 핸들링
app.use(function(req, res, next) {
next(createError(404));
});
- 404 에러 핸들러: 클라이언트가 요청한 URL이 정의되지 않은 경우, next(createError(404))를 호출하여 404 에러를 발생시키고, 에러 핸들러로 넘김
✅ 설명: 에러 처리 핸들링
app.use((err, req, res, next) => {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
- 에러 처리 미들웨어: 서버에서 발생한 에러를 처리함. 에러 메시지와 에러 객체를 res.locals에 저장하고, 이를 템플릿 파일 error.ejs에 전달하여 에러 페이지를 렌더링해줌
- 개발 환경에서는 상세 에러 메시지를 출력하고, 배포 환경에서는 사용자에게 친숙한 에러 메시지만 보여줍니다.
- res.status(err.status || 500): 에러에 맞는 HTTP 상태 코드(404, 500 등)를 설정함. (err.status가 없으면 기본적으로 500)
✅ 설명: 모듈로 내보내기
module.exports = app;
- 이 파일에서 생성한 app 객체를 외부로 내보내는 역할. 외부에서 require()로 가져와서 사용 가능
이제 터미널에서
$ npm start
라는 명령어를 입력하면 서버가 실행된다
제대로 실행됐는지 확인하기 위해서
http://localhost:3000/
주소창에 입력하고 확인해 보면
이렇게 연결이 되어있는 것을 확인할 수 있음
프로젝트 생성 완료!
'STUDY > Node.js' 카테고리의 다른 글
[ Node.js ] 컨트롤러 (0) | 2025.01.30 |
---|---|
[ Node.js ] 라우터 (0) | 2025.01.30 |
[ Node.js ] Schema와 model 생성 (0) | 2025.01.29 |
[ Node.js ] MongoDB 연결 (0) | 2025.01.28 |
[ Node.js ] 기본 준비 (0) | 2025.01.28 |