Runtime/Node.js

6. Express(에러, 정적 파일)

김엉배 2023. 1. 29. 02:04
728x90
반응형

1. 에러 처리하기

 - 라우트에서 아래와 같이 에러를 발생시키면, 익스프레스가 알아서 이를 처리하고 에러 코드 및 에러 정보를 클라이언트로 응답해 줌.

app.get('/error', function(req, res) {
 throw new Error('에러 발생') 
 // 라우트에서 에러가 발생하면 익스프레스가 알아서 이를 잡아서 처리한다. 
 // 클라이언트로 500 에러 코드와 에러 정보를 전달한다.
})

익스프레스 에러 처리

 - 익스프레스에는 앱에서 발생할 수 있는 모든 에러를 처리하는 에러 핸들러가 내장되어 있다.

    에러 핸들러를 사용하면 앱에서 에러가 발생했을 때 한 군데서 에러를 처리할 수 있기 때문에 더욱 효율적이다.

 

- 익스프레스에서 일반적인 미들웨어 함수를 정의하는 것처럼 에러 처리를 위한 미들웨어 함수를 정의하면 된다.

   단, 에러 처리 미들웨어 함수는 err, res, next 이렇게 4개의 파라미터를 사용한다.

// 에러 처리 핸들러 미들웨어 함수
app.use(function(err, req, res, next) {
 res.status(500).json({statusCode: res.statusCode, errMessage: err.message});
 // 상태 코드 500, 에러 메시지 전달
});

 - 아래와 같이 에러가 발생했을 때 next() 함수를 사용해서 에러 처리 핸들러로 에러를 전달하고 에러 처리 핸들러에서 

    클라이언트로 에러에 대한 응답 처리를 수행한다.

app.get('/error2', function(req, res, next) {
 next(new Error('에러 발생')); // next() 함수를 사용해서 에러 처리 핸들러로 에러 전달
});

 

2. 정적 파일 제공하기

 -  이미지, CSS, 자바스크립트 파일과 같은 정적 파일을 제공하려면 익스프레스의 미들웨어 모듈인 express.static을 사용.

다음과 같이 폴더와 파일이 있다고 가정.

 - 정적 파일 있는 폴더인 public 폴더 이름을 express.static 미들웨어 함수에 전달하면, 브라우저를 URL 통해 파일을 제공할 수 있다.

app.use(express.static('public'));
//public 폴더에 있는 모든 정적 파일을 URL로 제공할 수 있게 된다.

 - 다음과 같이 public 폴더의 파일을 브라우저를 통해 로드할 수 있다.

http://localhost:3000/css/style.css
http://localhost:3000/image/logo.jpg
http://localhost:3000/js/common.js
728x90
반응형