codestates / codestates/conimals
[정새얀] 220530 Error - Handling
- 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.