codestates / codestates/Memory-It
[Error Handling] ExpressJS: next('route') not working
- 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.