codestates / codestates/Memory-It

[Error Handling] ExpressJS: next('route') not working

Open
#88 0 comments 0 reactions 1 assignee Claimed by @cjhmoves33 View on GitHub
Error! server
Dominant language
JavaScript
Stars
1
Forks
2
PR merge metrics
No merged PRs in 30d

Description

### 어떤 에러인가요?
+ ExpressJS의 next('route')를 이용해서 조건에 따른 분기처리 시도하는 과정에서 적용이 되지않는 상황. 에러는 아님

### 에러 핸들링 방법
+ 프론트에서 라우팅이 되는 모든 페이지에서 최초로 이루어지는 모든 GET요청에서 토큰소지 여부에 따라 분기처리를 시도했지만 next('route')메소드가 작동하지 않는 상황
+ 분명 오류도 나지않고 코드자체도 이상이 없어보였는데 내가 예상한대로 작용을하지않아 공식문서부터 찾아봤다.

```jsx
// 당시 코드
app.use('/', currentUser, beforeLogin) // currentUser미들웨어 내부에서 조건에따라 next('route') 와 next()로 나뉜다.
app.use('/', routes)
```

#### 공식문서에서 찾아볼 수 있는 내용
1. next() 함수로 어떠한 내용을 전달하는 경우('route'라는 문자열 제외), Express는 현재의 요청에 오류가 있는 것으로 간주하며, 오류 처리와 관련되지 않은 나머지 라우팅 및 미들웨어 함수를 건너뜁니다.
이러한 오류를 어떻게든 처리하기 원하는 경우, 다음 섹션에 설명된 것과 같이 오류 처리 라우트를 작성해야 합니다.

2. app.use() 및 app.METHOD() 함수를 이용해 애플리케이션 미들웨어를 앱 오브젝트의 인스턴스에 바인드하십시오. 이때 METHOD는 미들웨어 함수가 처리하는 요청(GET, PUT 또는 POST 등)의 소문자로 된 HTTP 메소드입니다.

3. 라우터 미들웨어 스택의 나머지 미들웨어 함수들을 건너뛰려면 next('route')를 호출하여 제어를 그 다음 라우트로 전달하십시오. 참고: next('route')는 app.METHOD() 또는 router.METHOD() 함수를 이용해 로드된 미들웨어 함수에서만 작동합니다.

+ 잠시 뇌정지가오긴 했지만 잠시후 내가 한 반응은 **_'아...'_**
+ 그냥 app.use에서는 못쓰는거였다.
+ 역시 일단 공식문서 한번 뒤져보면 해결되는 경우가 많다. (단순히 내가 잘못사용한거였음)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.