[Express][Jest][ESModule] Cannot use 'import.meta' outside a module
·
공부/express
상황express 서버에서 ES Module을 사용하여 view router를 만들고 요청이 들어오면 html 파일을 보내주는 간단한 웹 서버를 구현하고 있었다. 원하는 html 파일을 보내주기 위해서 html 파일이 존재하는 위치를 가져와야 했다. 기본적으로 common JS를 사용할 때는 __dirname을 사용하여 파일의 위치를 알 수 있는데 ES Module에서는 __dirname을 사용할 수가 없다. 그래서 import.meta.url을 사용하여 아래와 같이 __dirname을 만들어서 사용하였다. import { fileURLToPath } from 'url';const __filename = fileURLToPath(import.meta.url);const __dirname = path.di..
[Express] jest로 단위 테스트 하는 법
·
공부/express
이번 포스팅에서는 jest를 사용해서 단위 테스트를 진행해보려고 한다. 단위 테스트는 전체적인 통합 기능을 테스트 하는 것이 아닌 작은 단위의 모듈을 테스트하는 것이다. 어떠한 모듈을 테스트하고 싶을 때 그 모듈이 다른 모듈과 연관 관계를 가지고 있으면 단위 테스트가 어려울 수 있다. 이 때 사용하는 것이 바로 Mock 객체이다. Mock 객체는 가짜 객체로 우리가 미리 어떤 입력이 들어오면 어떤 값을 내보낸다고 정해두는 것이다. 내부 실제 비즈니스 로직이 동작하는 것이 아니라 그냥 단순히 입력과 출력이 있는 것이다. 이 Mock 객체를 사용하면 작은 단위의 모듈 하나를 테스트하기 용이하다. 이번 포스팅에서는 아래 회원가입, 로그인 api에 단위 테스트를 적용해보자. const express = requ..
[Express] Redis 클라우드 서버를 세션 스토리지로 사용하기 (redislabs)
·
공부/express
https://growth-coder.tistory.com/278 [Express] 쿠키 세션 방식으로 로그인 구현이번 포스팅에서는 쿠키, 세션 방식으로 로그인을 구현해보려고 한다. 세팅 패키지를 설치하자. npm install express express-session bcrypt dotenv passport passport-local mongoose express : express 서버express-session :growth-coder.tistory.com 이전 포스팅에서 쿠키, 세션 방식으로 로그인을 구현했었다. 이 때는 세션을 단순하게 메모리에 저장을 했었는데 이번 포스팅에서는 redislabs라는 redis 클라우드 서비스를 사용해서 메모리가 아닌 별도 저장소에 저장하려고 한다. 먼저 클라우드..
[Express] passport 모듈을 통해 jwt 인증, 인가 구현
·
공부/express
https://growth-coder.tistory.com/278 [Express] 쿠키 세션 방식으로 로그인 구현이번 포스팅에서는 쿠키, 세션 방식으로 로그인을 구현해보려고 한다. 세팅 패키지를 설치하자. npm install express express-session bcrypt dotenv passport passport-local mongoose express : express 서버express-session :growth-coder.tistory.com 이전 포스팅에서 passport 모듈을 사용해서 쿠키, 세션 방식으로 인증, 인가를 구현해보았다. 이번에는 passport 모듈을 사용해서 jwt 방식으로 인증, 인가를 구현해보려고 한다. 이번에 사용할 주요 모듈은 다음과 같다.passport ..
[Express] passport 모듈을 통해 쿠키 세션 방식으로 로그인 구현
·
공부/express
이번 포스팅에서는 쿠키, 세션 방식으로 로그인을 구현해보려고 한다. 세팅 패키지를 설치하자. npm install express express-session bcrypt dotenv passport passport-local mongoose express : express 서버express-session : 세션 관리, 매 요청마다 session에 저장된 값을 req.session을 통해 꺼내올 수 있다.bcrypt : 단방향 해시함수. 비밀번호를 해시하여 데이터베이스에 안전하게 보관할 수 있다.dotenv : .env 파일을 사용하여 중요한 값을 관리할 수 있다.passport : 인증 과정 구현을 도와준다.passport-local : passport와 연결하여 로컬 인증을 쉽게 구현할 수 있다.mo..
[Express] API 작성법 (라우터, 컨트롤러 분리)
·
공부/express
https://growth-coder.tistory.com/274 [express] express 웹 서버 기초pacakage.json 생성npm init 명령어로 package.json을 만들어준다. package.json에는 프로젝트가 사용 중인 패키지의 정보가 담겨있다.package.json 문서를 통해 패키지를 쉽게 관리할 수 있다. npm init npm init 명growth-coder.tistory.com 이전 포스팅에서 간단하게 express 사용법을 알아보면서 라우팅 기능도 알아보았다. 이 땐 서버 실행의 메인이 되는 index.js 파일에서 직접 API를 작성하였는데 이러한 방식은 프로젝트의 규모가 커질수록 index.js의 길이가 늘어나고 가독성이 떨어지는 단점이 있다. 이번 포스팅에..