NodeJS + Express로 오류 처리 제거

( Jaydipsinh Vaghela) (2020 년 9 월 1 일)

사진 제공 : Erik Mclean on Unsplash

Javascript의 오류 처리가 약간 당신이 막 시작할 때 약간의 고통. 오늘은 NodeJS + Express로 오류를 처리하는 방법과이를 수행하는 다양한 방법에 대해 설명하겠습니다.

이 기사를 작성하는 이유는 주니어 역할을 위해 인터뷰를 할 때 일반적으로 존재하지 않는 경로를 처리하는 방법 또는 NodeJS로 API를 생성하는 동안 오류를 처리하는 방법에 대한 질문을합니까? 많은 개발자가이 질문에 답할 수 없습니다. 따라서이 기사는 특히 초급 또는 주니어 개발자를위한 것입니다.

우리는 NodeJS (v12.18. *), Express (v4.17. *) 및 ESLint를 Airbnb 코딩 스타일 가이드 라인 . 검토하려는 경우 참조 할 수 있도록 Github 링크 를 첨부했습니다.

다음은 Google에서 다룰 내용입니다.

  • 익스프레스가 경로를 정의하는 방법과 매핑을 이해합니다.
  • 경로가 없을 때 API를 처리 할 익스프레스 미들웨어를 만듭니다.
  • 코드가 임의 오류를 생성하면 어떻게되는지 이해
  • li>
  • 모든 종류의 오류를 처리하는 익스프레스 미들웨어 생성

익스프레스 경로 메커니즘 & 미들웨어가 존재하지 않는 경로

app.use() 또는 express.Router() 메소드를 사용하여 표현할 경로를 추가 할 수 있습니다. 이 방법을 사용할 때 Express는 등록 된 경로 목록을 추가하기 위해 위에서 아래로 접근하는 방식을 따릅니다. 따라서 API를 호출하면 서버가 위에서 아래로 일치하는 경로를 찾기 시작합니다. 이 프로세스 중에 첫 번째 일치 경로로 요청을 처리합니다. Express를 사용하여 동일한 경로를 여러 번 만들 수 있지만이 방법을 사용하면 요청을 처리하기 위해 항상 첫 번째 경로가 실행됩니다.

누군가가 존재하지 않는 API 엔드 포인트에 액세스하려고하면 서버에서 예기치 않은 오류가 발생했습니다. 모범 사례를 위해 이러한 상황을 처리해야합니다. UX 관점에서 고려하면 예상치 못한 오류를 프런트 엔드에 던질 수 없습니다. 이러한 상황을 처리하려면 경로가 존재하지 않음 상황을 처리 할 익스프레스 미들웨어를 사용해야합니다. 다음은 몇 가지 예제 코드입니다.

미들웨어가 존재하는 경로 없음

이 미들웨어는 경로 정의 코드의 마지막 문이어야합니다 . 이 미들웨어 이후에 정의 된 다른 경로는 실행되지 않으므로이 미들웨어의 위치는 매우 중요합니다. express가 경로를 찾기 시작하고 일치하는 경로를 찾지 못하면 express는 적절한 조치를 취할 수있는이 미들웨어의 코드를 실행합니다. 기본적으로 응답에 적절한 오류 메시지로 응답하므로 프론트 엔드 직원이 적절한 조치를 취할 수 있습니다.

비즈니스 로직 오류 & 처리 방법

사용자 경험은 모든 웹 애플리케이션의 성공을위한 열쇠입니다. 우리는 오류가 있어도 항상 긍정적 인 분위기로 사용자 상호 작용을 원합니다! 우리는 매일 수많은 코드를 작성하고 있으며 오류없이 코드를 작성하는 것은 불가능합니다. 특히 주니어 레벨에서는 오류가 발생할 가능성이 더 높습니다. API에 대해 express를 처리 할 때 코드가 정상적으로 충돌하면 전체 오류 개체가 어떤 상황에서도 유효하지 않은 요청에 대한 응답으로 전달됩니다. 적절한 오류 메시지를 사용자에게 전달할 수 있도록 코드 충돌을 처리해야합니다. 다음은 Express에서 오류를 처리하기 위해 미들웨어를 추가하는 코드입니다.

미들웨어 처리 오류

이를 사용하면 비즈니스 로직 내에서 생성 된 오류가 오류 개체 내에 반환됩니다. 오류 개체에는 오류에 대한 전체 스택 추적이 포함됩니다. 정보를 적절하게 처리하기 위해 응답 객체에서 상태를 가져올 수 있습니다. 상태 코드가 없으면 서버에서 문제가 발생했음을 의미하는 기본 500 상태 코드를 반환합니다. 오류 추적 개체 내부에는 오류를 설명하기 위해 사람이 읽을 수있는 형식의 메시지가 항상 있습니다.

프로덕션 빌드를 고려할 때 여기에 몇 가지 고급 사항을 추가하고 싶습니다. 모든 오류에 대해 적절한 조치를 취하기 위해 어딘가에 경고를 보내야합니다.일반적으로 개발자 팀에 이메일 알림을 보내거나 BugSnag 와 같은 오류 추적 소프트웨어를 사용하여 모든 종류의 항목을 추적 할 수 있습니다.

다음은 작동하는 코드가 포함 된 코드 스 니펫이므로 로컬에서 실행하여 더 잘 이해할 수 있습니다. 작동 코드가있는 저장소에서 전체 코드 액세스 를 찾을 수도 있습니다.

GitHub 링크 : https://github.com/Jaydipsinhv/express-demo

오류 처리가 포함 된 전체 작업 코드

이 기사가 주니어 개발자가 예외 처리를 더 명확하게하는 데 도움이되기를 바랍니다.