본문 바로가기
프로젝트

Err#2 - 알면알수록 허무한 디버깅

by 해룸 2024. 2. 5.

 

과제를 제출하고 받은 피드백을 토대로 코드를 수정하던 중 기존에 잘 되던 코드가 갑자기 안되는 에러가 있었다.

오늘의 오류는 대략 이렇다...

 

1. 우선 jwt.sign 함수를 모듈화 하라는 피드백을 받고 이런식으로 따로 파일로 빼주었다. 

import jwt from "jsonwebtoken";
import dotenv from "dotenv";

dotenv.config();

export default function (n) {
  return jwt.sign({ userId: user.userId }, process.env.SESSION_SECRET_KEY, {
    expiresIn: n,
  });
}

 

2. jwt.sign을 쓰는 로그인 api도 수정했다.

import JWT from "../utils/jwt.sign.js";

router.post("/sign-in", async (req, res, next) => {
  try {
    const { email, password } = req.body;

    const user = await prisma.users.findFirst({ where: { email } });

    if (!user)
      //일치하는 users가 존재하지 않음
      return res.status(401).json({ message: "존재하지 않는 이메일입니다." });
    if (!(await bcrypt.compare(password, user.password)))
      //users.password값을 비크립트로 비교했는데 비밀번호 일치하지않음
      return res.status(401).json({ message: "비밀번호가 일치하지 않습니다." });

    //jwt는 header/payload/sign으로 이루어져있음
    const accessToken = JWT("12h");
    const refreshToken = JWT("7d");
    ... 이하 생략

 

3. 룰루랄라 수정했으니 실행시켜본다. 작동이 잘 되네?

 

4. 그런데 auth.middleware를 거쳐야하는(로그인인증과정) 내 게시글 작성, 내 게시글 조회 api 는 안되네??

처음에는 auth.middleware 파일이 잘못된줄 알고 계속 노려보았다.. 왜인지는 모르겠지만 cookie로 받은 authorization 값이 계속 undifined 가 떴다. cookie manager를 켜도 쿠키가 버젓이 존재하는데 왜 없다는거지?.. 

팀원이 비슷한 오류를 겪는걸 본적 있는데, 그때는 cookie-parser 라이브러리 설치를 안해서 생긴 오류였다. 내 경우 app.js 파일에 이미 있는데 괜히 아무데나 cookie-parser를 갖다붙여보았다. (당연히 해결안됨)

 

사실은...

1. 처음부터 jwt.sign 모듈을 잘못 만듬. 이 코드의 user는 대체 어디서 가져오는것인가? (컴퓨터둥절)

 

2. api주소가 잘못 됨(이전에 pm2로 배포한 서버에 요청 보내는중..)

 

디버깅 과정에서도 수많은 오류가 발생해 나를 해답에서 더욱 멀게 만들었다는 결론이다.