오류 해결2

이석원·2022년 8월 28일
0
  • Unit test: app.js 모듈을 불러올 수 없음.

    const { createApp } = require("../app"); 에서 실패가 뜬다.

    • 오류의 증상: jest 의 test 가 멈춘다.
    • 오류의 원인: app.js 를 불러올 수 없다. 이유를 알 수 없다. console.log() 로 찍어볼 수 있을까. 문제를 해결했다. 원인은 userDao 비 비동기 처리가 안됐기 때문이었다. async 를 함수에 넣어주니 잘 돌아간다.
    • 오류 해결책:
      • “../app”→ “../app.js” ⇒실패
      • userDao.createUser 를 비동기 처리로 바꿔줌. ⇒ 해결!
  • app crashed→서버 멈춤: 오류가 발생하고 서버가 멈춘다. 즉 터졌다.

    • 오류의 증상: 서버가 구동을 멈춰서 작동 하지 않음. 이제 해결하자.
    • 오류의 원인: 에러 핸들링. 에러를 잡아내고 서버는 계속 이어져야 한다.
    • 오류의 해결책: 스택오버플로의 오래된 글→좋은 글이지만 너무 오래됐다. 증상을 해결하는데 도움은 되지 않았다. 그래서 logger 를 설치하여 추적해 보았다.
      • winston 을 사용하여 log 를 추적했다. 실패했음에도 success 가 떴다. 실패했을 경우 catch 로 넘어가야 하는데 그러지 않는 점이 수상했다. 그래서 오류를 catch 하는 userController 를 자세히 살펴보니 함수에 비동기처리를 하지 않았다. 동기 처리를 하고 나서 app crash 가 사라졌다.

    - 결과: app crashed 가 사라졌다. 오류가 발생해도 서버는 정상 작동한다. 이로 미루어보아 비동기 처리가 되지 않아서 res.status 가 실행되는 것 같다. 따라서 서버를 구동시키는 경우 에러를 미들웨어로 잡아내는게 낫다는 생각이 든다. wrapping 이 필요하다.

  • ReferenceError: logger is not defined→axios -fetch 실험실에서 터졌다. 왜 안되는지 파악됐음

    • 오류 증상: ReferenceError: logger is not defined. 증상의 원인을 방금 찾았다. 아래와 같이 작성해야 했는데 {} 를 빼먹었다.

      const { logger } = require(....);
profile
개발자 공부중

0개의 댓글