codestates / codestates/conimals

[정새얀] 220530 Error - Handling

Open
#60 0 comments 0 reactions 0 assignees View on GitHub
complete
Dominant language
JavaScript
Stars
3
Forks
5
PR merge metrics
No merged PRs in 30d

Description

> 해결된 에러라면 라벨에 'Complete' 를 달아주세요.
> 미해결된 에러라면 라벨을 'In progress' 로 변경해주세요.

### 어떤 에러인가요?
- multer를 활용한 사진 업로드 기능 구현을 위해 포스트맨으로 요청, 응답 확인 중 나온 에러
- JsonWebTokenError: invalid token

### 에러 메시지

```bash
POST /posts/uploads 500 1287 - 5.826 ms
MulterError: Unexpected field
```

```bash
return done(new JsonWebTokenError('invalid token'));
^
JsonWebTokenError: invalid token
```

```bash
SyntaxError: Unexpected token - in JSON at position 0
```

### 에러 핸들링 방법
* 첫번째 에러
처음 작성한 코드
```js
router.post('/uploads', uploads.single('img'), (req, res) => {
console.log(req.file);
res.status(201).send({
message: '이미지 저장 성공',
fileInfo: req.file,
});
});
```

수정해서 작성한 코드
```js
router.post('/uploads', uploads.single('image'), (req, res) => {
console.log(req.file);
res.status(201).send({
message: '이미지 저장 성공',
fileInfo: req.file,
});
});
```

처음에는 잘 몰라서 일단 img라는 이름으로 넣어줬는데, 계속 찾아보면서 작성하다보니 image라는 이름을 사용하고 있었다.
그 부분을 깜빡하고 계속 img로 들어가고 있어서 나온 에러였다.
name 속성을 가진 type = 파일이 전달 된 매개 변수 이름과 같아야한다는 것을 알게 되었다.

* 두번째 에러
tokenFunctions의 index.js에서 isAuthorized() 함수에 토큰을 split해주지 않아 생긴 에러 메시지였다.
```js
isAuthorized: (req) => {
const authorization = req.headers['authorization'].split(' ')[1];
if (!authorization) return null;
const token = authorization;
if (!token) return null;
return verify(token, process.env.ACCESS_SECRET);
}
```
split(' ')[1]을 추가해주었다.

*세번째 에러
포스트맨에서 /posts라우트를 설정해주지 않고 post요청을 보내어 나온 에러였다...
추가해주고 나니 제대로 해결이 되었다.

### 에러 핸들링을 위해 참고한 레퍼런스 링크

[MulterError: Unexpected field](http://daplus.net/node-js-node-multer-%EC%98%88%EA%B8%B0%EC%B9%98-%EC%95%8A%EC%9D%80-%ED%95%84%EB%93%9C/)

[JsonWebTokenError: invalid token](https://stackoverflow.com/questions/48606341/jwt-gives-jsonwebtokenerror-invalid-token)

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.