본문 바로가기

분류 전체보기

백엔드 : 환경변수로 저장한 jwt 비밀키를 못읽어 오는 에러 분명 코드상에는 문제가 없으나 비밀키를 읽지 못하는 에러가 발생 . . . console.log로 디버깅을 한 후 가운데 코드이후로 콘솔이 안찍히는것을 확인하고 jwtserice에서 토큰을 생성하지 못하는것을 발견. . . . 원인 : 환경변수로 관리하는 비밀키를 읽어오지 못함. . . 해결 : auth module에서 ConfigModuel을 import 해줌 . . . 환경 변수를 사용시 appmodule에서만 ConfigModuel를 import 하면 전역적으로 사용을 할 수 있었다고 착각을 하였다. 각 모듈별로 ConfigModuel를 import 해야 해당 모듈에서 환경변수를 사용할 수 있다. . . 아마 전역적으로 사용하는 법이 있을것 같지만 우선 기본적인 기능 구현이 끝난 뒤 리팩토링 하는 .. 더보기
백엔드 authmodule과 usermodule간의 의존성 에러 jwt 로그인 구현중 의존성 에러 발생 새로운 auth 모듈을 생성하고 코딩한 후 토큰이 잘 발급되는지 확인하는 과정에서 의존성 에러가 발생. 원인 : user모듈에서도 auth 모듈의 서비스를 이용하고 auth모듈에서도 Userservice를 이용해서 순환 참조 모듈의 문제로 원활한 DI 가 안된것 같다. 해결 : forwardRef(() => UserModule), forwardRef(() => AuthModule) forwardRef 함수를 사용해서 순환모듈 문제를 해결. 더보기
NestJS request LifeCycle[요청주기] 출처 : https://dkrnfls.tistory.com/83 출처 :https://velog.io/@haron/NestJS-Lifecycle-Events 더보기
백엔드 Interceptors & AOP 패턴 Interceptor는 @injectable() 데코레이터로 주석이 달린 클래스이며 NestInterceptor 인터페이스를 구현해야한다. 또한 AOP(aspect oriented Programming,관점지향프로그래밍)에서 영감을 받은 여러가지 유용한 기능들이 있다. 즉 컨틀롤러가 시작할때와 끝났을때 각각 특정 기능들을 수행할 수 있다. 하지만 주로 컨트롤러 끝났을 때의 시점을 주로 사용한다. . . success.interceptor.ts 생성 후 아래와 같이 커스텀 user 컨트롤러단 전체에 인터셉터 적용. 성공시 커스텀 한 형식으로 응답을 주는것을 확인할 수 있다. 더보기
백엔드 Exception filter 내가 백엔드와 프론트엔드 둘다 개발을 하기에 에러처리에 대한 응답은 기본적으로 가시성이 좋게 약간의 커스텀만 하여 Nest가 던저주는 코드와 메세지 그대로사용할 예정이며 추후 개발시 커스텀이 필요한 경우 exception filter를 세부적으로 커스텀 처리할것이다. . . 우선 개별적으로 필터는 넣는것이 아닌 전역적으로 필터를 넣어준다. http-exception.filter.ts 파일을 생성. 기본적으로 errors는 string 아니면 object로 타입이 뜬다. object는 nest 자체적으로 던져주는 에러를 의미하며 string은 개발자 자체적으로 던져준 에러이다. 위와 같이 커스텀하여 개발자(나)가 자체적으로 던진 에러는 string으로 받아서 처리하고 이외에는 object로서 비구조분해할당.. 더보기
백엔드 해쉬된 비밀번호 데이터 베이스 저장시 에러 데이터 베이스에 해쉬한 비밀번호 값을 저장하려고 하니 에러가 남. 데이터베이스와 엔티티의 가용범위를 늘려줌. 해결. 더보기
백엔드 유저 모듈 생성 시 에러 회원 가입 기능을 만들던중 컨트롤러 단과 서비스단을 마친 후 서버를 켜보았는데 에러 발생. 이유 ==> UserService에서 UserRepository 를 사용하는데 DI를 해주지 않아서 그럼. 각각의 모듈에서 typeorm의 user 엔티티를 임포트를 해야 했었다. 해결 더보기
백엔드 로깅 미들웨어 추가 기본적으로 백엔드 미들웨어는 라우터 보다 먼저 실행이 된다. 그래서 reponse.on 사용. 우선 http에 대한 기본적인 메서드와 url 상태코드 ip 등등만 로깅을 하게 설정하였다. 추후 개발시 필요하면 더 추개해야겠다. 아래와 같이 4번의 api 요청에 대해 로그가 찍히는것을 확인 더보기