오류 응답
Coddy Node.js 여정의 Express 기초 섹션에 포함된 레슨. 23개 중 17번째.
서버에서 문제가 발생하면 경로 요청이 실패할 수 있습니다. Error를 던지면 해당 오류가 Express로 전달됩니다. 오류 처리기는 err를 첫 번째 매개변수로 포함해 네 개의 매개변수를 받는 미들웨어입니다. Express는 던져진 오류를 이런 종류의 미들웨어로 보냅니다.
app.use((err, req, res, next) => {
res.status(500).json({error: 'Try later'});
});경로 뒤에 처리기를 배치하세요. 클라이언트에는 짧은 메시지를 보내고, 서버에는 자세한 내용을 기록할 수 있습니다. next를 사용하지 않더라도 네 개의 매개변수를 모두 유지하세요. Express는 함수의 형태를 보고 오류 처리기인지 판별합니다.
처리기를 추가하기 전에는 GET /broken이 Express 자체 HTML 오류 페이지를 반환합니다. next(err)를 호출해도 오류 처리기로 오류가 전달되며, next()를 호출하면 정상적으로 계속 진행됩니다.
챌린지
쉬움실행하면 practice-errors/server.js만 시작됩니다. Recipe Box 파일은 그대로 두고 다음 수업에서 이어서 작업합니다.
실행한 다음 GET /broken을 보내 기본 오류 페이지를 확인하세요. 경로 뒤에 오류 처리기를 추가하세요. console.error를 사용해 err.message를 로그에 기록한 다음, 상태 코드 500과 {"error":"Try later"}를 전송하세요. 응답에 Database offline이 노출되어서는 안 되지만, Console에는 표시되어야 합니다.
오류를 발생시키는 경로는 잠겨 있는 practice-errors/routes.js에 있습니다. 해당 경로를 마운트하는 코드는 그대로 두고, 처리기는 server.js에 작성하세요.
직접 해보기
import routes from './routes.js';
import express from 'express';
const app = express();
app.use(routes);
// 여기에 오류 처리기를 추가하세요.
app.listen(3000);
Express 기초의 모든 레슨
직접 연습해 보세요: Express 플레이그라운드