본문 바로가기

typeScript7

[Node.js] Nest.js 폴더 구조 설계하기 0. 개요 [ 기존의 구조 ] 보통 express에서는 컨트롤러, 서비스 별로 쭈욱 파일이 모여있다. 아래는 과거에 진행한 프로젝트 구조이다. 프로젝트를 진행하면서 mvp가 많아질수록 컨트롤러와 서비스는 많아졌고 점점 도메인 별로 코드를 찾기 어려워졌다. 이 구조는 서비스가 확장되면 도메인 별로 흩어져 있기 때문에 파일을 찾아서 개발하는 것이 힘들다. 그래서 좀 더 대규모 서비스의 폴더 구조는 어떻게 설계하는지 궁금해졌고, 이번에는 nest에서 최대한 DDD할 수 있는 폴더 구조를 알아보려 한다. ┣ 📂controllers ┃ ┣ 📜bookMarkController.ts ┃ ┣ 📜checklistController.ts ┃ ┣ 📜scheduleController.ts ┃ ┣ 📜subscribeContro.. 2022. 9. 25.
[Docker] TypeScript + Node, Dockerfile 작성 및 build 우선 Docker Container를 run 하기 위해서는 Docker Image가 필요하다. Docker Image를 생성하는 방법은 두 가지가 있다. container를 대상으로 commit 명령어 실행 Dockerfile을 작성해서 build 명령어 실행 이때 나는 이미 사용하고 있는 container가 없기 때문에 Dockerfile을 이용해서 Image를 build 했다. 1. Image (이미지) ✔️ 도커 이미지는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것이다. 다음과 같은 이미지 파일을 만들기 위해서 Dockerfile을 작성해보자. 2. Dockerfile FROM : 어떤 리눅스를 사용할 것인지에 대한 것 COPY : 파일 복사 현재 디렉토리 밑에 /app에 복사 (/.. 2022. 6. 25.
[TypeScript+Express] Redis로 Refresh Token 관리 0. 개요 이전 프로젝트에서는 MongoDB를 사용하면서 Refresh Token을 DB에 저장했다. 이번에는 Redis를 연결하여 구현을 해보자. 지난 포스팅에서 JWT에 대한 개념을 올렸기 때문에 이번에는 Redis에 초점을 맞춰서 작성하도록 하겠다. 👉 [Node.js+Express] Refresh Token 구현 1. 사용 이유 [ 왜 Refresh Token을 저장해야할까 ] Access Token은 서버에 따로 저장해 둘 필요가 없지만, Refresh Token의 경우 서버의 stroage에 따로 저장해서 이후 검증에 활용해야 한다. 검증을 위해 서버는 Refresh Token을 별도로 저장하고 있어야 하며, Refresh Token을 이용한다는 것은 추가적인 I/O 작업이 필요하다는 의미이며.. 2022. 6. 21.
[Error: TS(2339)] TypeScript에서 catch(error) 에서 error message 사용하기 💡문제 상황 JavaScript에서 catch 문에서는 error.message를 쓰는 경우가 많았다. TypeScript에서도 JS와 같이 코드를 작성하니 다음과 같은 오류가 생겼다. TypeScript는 error의 타입을 unknown을 기본값으로 갖는다. 그래서 catch 절 error 변수에 Error 타입을 넣어보았다. 하지만 뚜둥! 다음과 같은 오류가 생겼다. catch 문에서 발생하는 에러가 Error 객체가 아닌 에러일 수도 있기 때문에 Error 타입을 지정해줄 수 없다. 따라서 error가 Error 객체라면 error.message를 반환하고 다른 객체라면 error 자체를 stringify 해서 반환하자. 💡 해결 방법 catch문에 사용할 error util 함수를 만들었다. e.. 2022. 6. 15.
[#1] TypeScript + Express에서 Sequelize 시작하기 0. 개요 시퀄라이즈는 node.js ORM이다. Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server를 지원한다. 3차 웹 프로젝트에서 MySQL DB를 사용하기 위해서 Sequelize를 사용해보자! 1. 설치 yarn add sequelize sequelize-cli mysql2 sequelize: RDB와 매핑되도록 해주는 ORM 패키지 sequelize-cli: commandline for sequelize mysql2 : mysql과 연결을 위해 필요한 패키지 2. 초기 설정 ✔️ sequelize init sequelize 명령어 확인 -h 옵션으로 명령어를 확인할 수 있다. npx sequelize -h 아래 명령어를 입력하면 초기 폴더 구조가 .. 2022. 6. 14.
[Error: TS(2339)] Express Request 확장하기 😥 문제 상황 1. Token 검증 Middleware 작성 토큰 검증 코드를 작성하면서 req.currentUserId로 decoded한 값을 할당하려던 중 js 프로젝트에서는 오류가 없었던 코드가 ts에서 오류가 생겼다. // ./src/middlewares/loginRequired.ts ... try { if (!process.env.JWT_SECRET_KEY) { throw new Error("JWT_SECRET_KEY가 존재하지 않습니다."); } const secretKey: string = process.env.JWT_SECRET_KEY; const jwtDecoded: any = jwt.verify(userToken, secretKey); const userId = jwtDecoded.us.. 2022. 6. 9.
TypeScript + Node.js + Express 에서 프로젝트 시작하기 0. 프로젝트 폴더 생성 나의 프로젝트 폴더 구조는 다음과 같다. 1. 패키치 설치 나는 package manager로 yarn을 사용했다. 내 프로젝트 폴더 구조 기준으로 back 폴더에서 다음 명령어를 실행했다. 1) yarn 초기화 $ yarn init 2) 필요한 패키치 설치 typescript 전역으로 설치 yarn add typescript -g $ yarn add ts-node nodemon typescript @types/express @types/node nodemon --dev $ yarn add express typescript는 node에서 바로 실행되지 않기 때문에 tsc를 사용해서 javascript로 변환한 다음 실행된다. 프로덕션 환경에 올리기 위해서는 모든 파일.. 2022. 6. 6.
반응형