일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 자격증
- 중간이들
- aws
- Cookie
- MySQL
- 엘리스sw트랙
- 코드잇
- HTML
- 99클럽
- 꿀단집
- TiL
- 항해99
- redis
- 파이썬
- JavaScript
- node.js
- 유노코딩
- CSS
- 데이터베이스시스템
- Python
- nestjs
- SQL
- 코딩테스트
- 코딩테스트준비
- Git
- 파이썬프로그래밍기초
- 개발자취업
- 방송대
- 프로그래머스
- 방송대컴퓨터과학과
- Today
- Total
목록nestjs (13)
배꼽파지 않도록 잘 개발해요

NestJS 서버에서 express-session과 passport, connect-redis를 사용하여 세션 로그인을 구현하였다.API를 점검하는 도중에 로그아웃에 문제가 있는 것을 발견하였다.어제 몇 시간 동안 테스트한 결과, 자잘한 문제가 다양하게 발생하여 해결하는 것에 시간이 좀 걸렸다.우선 큼직하게 핵심만 요약하면 아래와 같다.세션 로그인/로그아웃 문제 및 해결과정 요약문제- 로그아웃 시 Redis 데이터 삭제 문제: 서버에서는 삭제되었다고 기록되지만, 실제 Redis에서 데이터가 삭제되지 않음. - 쿠키 삭제 문제: 로그아웃 시 쿠키가 완전히 삭제되지 않고, 새로운 값으로 변경됨. - 환경 설정 문제: 세션의 saveUninitialized 설정이 의도치 않게 true로 설정되어 불필요한 세션..

NestJS를 사용하다보면 express에서 Request와 Response 객체를 직접 import 해야할 일이 있다. 예를 들면 Response 객체를 사용하여 클라이언트에 쿠키를 설정하거나 전송해야하는 일, 미들웨어 작성, 거의 없지만 파일 전송 등의 경우가 있다. 컨트롤러에서 만든 API를 Thunder Client로 테스트하던 도중 응답이 pending 상태가 되는 일이 발생하였다. 이럴 경우 무조건 내가 코드를 잘못 쓴 것이기 때문에 컨트롤러부터 살펴봐야한다.auth.controller.ts 파일을 살펴보니 해당 API에서 @Res() 데코레이터를 주입하여 사용하고 있었다. 코드를 아래처럼 수정하면 잘 작동한다. @Res 데코레이터를 삭제하거나, 아니면 @Res 데코레이터를 사용하면서 resp..

글은 아래와 같은 구성으로 이루어진다. Google Cloud API 사용을 위한 설정NestJS에서 OCR 기능 추가 API 사용 중 발생한 타입 오류 해결 원하는 문자열만 추출하기 Google Cloud API 사용 이유지금 특정 학교의 특정학과 학생들(재학생, 졸업생)만 이용할 수 있는 동문 커뮤니티를 만들고 있다. 사용자가 재학증명서나 졸업증명서 이미지를 업로드하고 회원가입 폼을 제출하면 서버에서 사용자의 실명만 추출해서 Users 테이블에서 userName 컬럼에 넣어주는 로직이 필요하였다.이때 이미지에서 텍스트를 추출하는 OCR 라이브러리가 필요하였는데, 자바스크립트에서는 tesseract.js와 Google Cloud Vision의 API를 많이 활용하는 것 같았다.어떤 분의 블로그를 보니..

NestJS에서 SSR을 해야할 일이 생겼다. pug와 ejs를 써봤는데 ejs 문법이 편해서 ejs를 사용하기로 했다.작성한 ejs 파일은 다음과 같다. 안에 서버에서 지정한 변수의 값이 들어간다.예를 들어 nickname이 고길동이면 "안녕하세요. 고길동님!" 이런식으로 렌더링이된다. 작성한 코드는 다음과 같다.ejs 템플릿 엔진 안에 이메일 인증이 필요합니다. 안녕하세요. 님! 회원가입 완료를 위한 이메일 인증이 필요합니다. 아래의 버튼을 클릭하여, 이메일을 인증해주세요. 버튼을 클릭하시면, 중간이들 사이트의 메인..

NestJS는 모듈 기반 아키텍처를 사용하는 프레임워크이다. import와 export만 제대로 해주면 되는 express와는 다르다.이로 인해 의존성 주입(Dependency Injection)과 모듈 간의 관계 설정이 정말 중요하다. 그래서 아래와 같은 깜찍발랄한 오류들을 자주 만날 수 있다.[Nest] 7816 - 2024. 08. 26. 오후 4:47:41 ERROR [ExceptionHandler] Nest can't resolve dependencies of the AuthSessionService (?). Please make sure that the argument Redis at index [0] is available in the AuthModule context.Potential..

현재 진행하고 있는 프로젝트의 로그인 단계는 대략 7단계를 거친다.코드 개발 중이라서 이보다 많아질 수 있다. 아직 부족하다. auth.service.ts 클래스 안에 특정 함수를 정의하고, 이 함수를 다른 함수가 재사용하는 형태가 되었다. 쉽게 말해 클래스 안에서 한 함수를 다른 함수가 끌어다 쓰고 있는 상황이다.지금 로그인 로직만해도 7단계를 거치고 있는데, 이러다보면 AuthService에는 메서드들이 넘쳐나서 개발할 때 필요한 메서드를 쉽게 찾을 수 없다. 클라이언트에서 리퀘스트가 온다고 하면AuthController의 로그인 API→ AuthService의 로그인 메서드이런식으로 깔끔하게 거쳐가게 하도록 하고 싶다.로그인 메서드에 필요한 나머지 메서드들은 AuthService에서 재사용하는 것이..

https://programming-bellybutton.tistory.com/200 [NestJS] res.cookie를 사용하기 위해 Express의 Response를 import 해야함프로젝트 리팩토링을 하고 있는데, Access token은 리스폰스의 리턴값으로 보내주고, Refresh token은 쿠키에 담아서 전송하기로 하였다. res.cookie를 사용하기 위해 Express의 Response를 importNestprogramming-bellybutton.tistory.com지난번에 이런 글을 쓴 적이 있다.글의 요지는 NestJS에서 특정 속성(예: cookie)을 사용하기 위해 express의 객체를 불러와야 한다는 것이었다. 이번 프로젝트에서도 express의 Request 객체를 불러..

프로젝트 리팩토링을 하고 있는데, Access token은 리스폰스의 리턴값으로 보내주고, Refresh token은 쿠키에 담아서 전송하기로 하였다. res.cookie를 사용하기 위해 Express의 Response를 importNestJS에서 Request와 Response 객체를 사용하는 방법은 두 가지가 있다. Express로부터 직접 가져온다 NestJS의 @nestjs/common에서 가져온다 VSCode에서 자동 import를 설정해 놓으면 NestJS의 @nestjs/common에서 가져오게 된다. 그런데 쿠키 전송을 위해 res.cookie를 사용하려면 Express의 Response 객체를 사용해야 한다. res를 import하고 res.cookie를 입력했는데 이렇게 인식하지 못하는..

redisClient에 세션 ID를 넣어주는 코드를 작성하던 중 오류가 발생하였다.NestJS는 기본적으로 TypeScript로 만들어졌기 때문에 타입스크립트를 사용한다. 타입스크립트는 런타임이 아닌 컴파일 중 타입 오류를 발생시킨다. 그래서 코드 작성할 때 시간이 꽤 걸리지만 서버 실행 중 오류가 발생하는 것보다는 백배 낫다.Object literal may only specify known properties, and 'sessionId' does not exist in type 'Buffer'.ts(2353)(property) sessionId: Promise 현상객체를 set 메소드에 직접 전달할 때 타입 에러가 발생하고 있다.문제Object literal이 특정 타입에 맞춰서 작성되어야 하는데..

데이터베이스와의 연결 여부를 알 수 있는 healthcheck API를 만들다가 다음과 같은 오류가 발생하였다. Error: Nest can't resolve dependencies of the HealthCheckService (REDIS_CLIENT, ?). Please make sure that the argument default at index [1] is available in the HealthCheckModule context.Potential solutions:- Is HealthCheckModule a valid NestJS module?- If default is a provider, is it part of the current HealthCheckModule? - If ..