codestates / codestates/brewhere
[RE-Error Handling] 220701 리팩토링 에러핸들링
- 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.