codestates / codestates/brewhere

[RE-Error Handling] 220701 리팩토링 에러핸들링

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

Description

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

### 어떤 에러인가요?
- 배포 상황에서 회원가입이나 로그인을 할 때 secretOrPrivateKey error가 뜨면서 500번대 status code가 콘솔에 찍힘.
- 그 후 로그인을 할 때 authorization을 읽을 수 없다는 에러가 뜸.

### 에러 메시지

```bash
return failure(new Error('secretOrPrivateKey must have a value'));
^
Error: secretOrPrivateKey must have a value
```

### 에러 핸들링 방법

- 첫번째 에러는 controllers/tokenFunctions/index.js 코드에서
ACCESS_SECRET과 REFRESH_SECRET을 템플릿 리터럴로 감싸주어 저장한 후 서버를 재실행했더니 해결되었다.
레퍼런스 링크를 보고 해결했지만, conimals에서는 그렇게 해주지 않아도 잘 실행이 되었는데 이번엔 왜 이렇게 해주어야 하는지 모르겠다.

```js
module.exports = {
generateAccessToken: (data) => {
return sign(data, `${process.env.ACCESS_SECRET}`, { expiresIn: '24h' });
},

generateRefreshToken: (data) => {
return sign(data, `${process.env.REFRESH_SECRET}`, { expiresIn: '10d' });
},

checkAccessToken: (req) => {
const authorization = req;
if (!authorization) return null;
const token = authorization;
if (!token) return null;
return verify(token, `${process.env.ACCESS_SECRET}`);
},

checkRefreshToken: (refreshToken) => {
try {
return verify(refreshToken, `${process.env.REFRESH_SECRET}`);
} catch (err) {
return null;
}
},
```

- 두번째 에러는 const authorization = req.headers['authorization'].split(' ')[1]; 코드를 const authorization = req; 로 수정하여 해결했다.

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

[링크](https://codehunter.cc/a/express/error-secretorprivatekey-must-have-a-value)

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.