4문제상황
로그인, 로그아웃 API 구현, 기능 구현 후 Thunder Client와 rest Client로 테스트 해보던 중 send request를 눌렀는데도 성공 혹은 실패 메세지가 반환되지 않고 계속 waiting.. 만 계속될 뿐이었다.
생각을 해봤을 때 request로 무언가를 보내면 성공이나 실패가 무조건 떠야한다고 생각했는데 아예 아무런 문구, 오류도 뜨지 않아 생각조차 할 수 없는 부분이어서 너무 막막했다.
해결
문제는 라우터가 진입하기 전에 걸려있던 cookie parser 때문이었다. 심지어 제대로 사용하지도 못했다.
Client에서 호출했던 경로는 localhost:3000/api/auth/signin 이었는데 authRouter 앞부분에서 오류가 걸려 계속 무한 루프를 돌고 있는 것이었다.
// auth.router.js 앞부분
const cookieParser = require("cookie-parser");
const authRouter = express.Router();
authRouter.use(cookieParser);
// 회원가입
authRouter.post('/signup', async (req, res) => {
try {
const { name, email, password, passwordConfirm, gender, birthday } =
req.body;
...
문제는 3번째 줄에서 발생했다. 이 부분을 지워주니 Client가 잘 동작하는 것을 확인할 수 있었다.
그런데 내가 간과한 문제점이 3가지 있다.
1. cookie-parser는 app.js에서 사용해주면 연결된 router들까지 전부 전역으로 동작한다는 것이다.
따라서 router페이지 앞부분에 cookie-parser를 써 줄 필요가 없었다.
2. cookie-parser를 사용해도 됐었다고 하더라도 사용법이 잘못되었다.
const cookieParser = require("cookie-parser"); 라고 변수를 지정해두었다면
app.use(cookieParser)로 적을게 아니라 app.use(cookieParser())로 적어주어야 한다.
3. 제일 중요하게는 router가 연결되기 전에 3번째 줄을 작성했기 때문에 Client의 send request의 경로대로 따라가지
못하고 기본경로와 router의 중간경로에서 오류가 발생했기 때문에 아무 것도 뜨지 않고 멈춰버린 것이다.
결론
따라서 Thunder / Rest Client가 무한으로 waiting 된다면,
먼저 send request를 보낸 경로를 확인해보고 경로의 중간 중간 console을 찍어봐야한다.
만약 console.log가 찍히지 않는다면 경로 중간중간에 잘못 껴있는 코드는 없는지, 경로를 이동하는데 방해되는 코드는 없는지 잘 확인해봐야 한다.