프로그래밍사업/사이드 프로젝트
[NestJS] TS2339: Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>’. 손쉽게 에러 해결
ironwhale
2024. 10. 17. 08:52
코드팩토리님의 NestJS 강의를 복습하던 중 미들웨어 부분을 복습하고 있는데 강의를 보고 하면 에러가 발생하지 않는데 혼자 복습하면서 한 것은 req.user하면 리퀘스트(req)에 user가 없다는 에러가 나서 이 에러를 해결한 방법을 소개하도록 하겠습니다.
언제 에러가 발생하는가?
우선 이 에러는 미들웨어를 사용해 jwt토큰을 검증하는 미들웨어를 만들때 발생 했습니다. 파싱 된 토큰 정보를 req.user에 넣어주면 컨트롤러에서 이 유저 정보를 가지고 올수 있도록 하는 부분입니다. 그런데 req에 user에 빨간불이 들어오면서 에러를 발생시켰습니다.
해당 문제로 검색 해보면 타입 정의를 새로 하는 방법을 소개하는데 저는 다른 방식으로 손쉽게 해결하는 방법을 소개해보도록 하겠습니다.
해결방법
user를 찾지 못하는 에러의 저의 해결 방법은 @types/passport-jwt를 설치하는 방법입니다. 사실 passport로 인증 시스템을 구현하지 않더라도 별도의 타입 정의를 새로 하는 방식이 어려우신 분들은 이것을 설치하여 손쉽게 해결하실 수 있을 것입니다.
설치방법
개발할 때만 사용하는 타입을 정의하는 패키지 이기때문에 -D를 사용해 개발 환경에서만 사용하도록 하였습니다.
pnpm i -D @types/passport-jwt
스프링부트 nestJS 둘다 해보고 느낀점
확실히 nestJS가 cli툴이 로 모듈을 생성할 수 있어 스프링부트보다 좀 더 빠르게 개발이 가능한거 같습니다.