웹/BackEnd

[Redis] connect-redis TypeError: require(...) is not a function 해결

starcat37 2023. 8. 10. 01:35

asku 프로젝트 배포 설정하다가 불현듯 과거에 고생했던 게 생각나서 적어놓는 오류.

Node.js 교과서 개정 3판: 15.1.8 connect-redis - 5

더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.

thebook.io

node.js 교과서 등 23년 2월 정도 까지의 코드에는 connect-redis 설정을 위해 다음과 같은 코드를 사용한다.

const RedisStore = require('connect-redis')(session);

그러나 현재는 위와 같은 코드를 사용하면 다음 에러가 발생한다.

const RedisStore = require('connect-redis')(session);
                                           ^

TypeError: require(...) is not a function

 
당시에는 아무리 찾아봐도 해결방법을 찾을 수 없어서 막막했는데, 다음 글을 발견하고 해결하였다.

express-session에서 Redis사용을 위한 connect-redis v7 변경 사항 및 오류 해결 방법

TypeScript, Node.js, 알고리즘, 자료구조, 데이터베이스, 개발 팁, 각종 문제 해결 방법 등을 공유합니다.

techbless.github.io

요약하자면,
1. RedisStore 초기화 시 더이상 express-session을 사용할 필요가 없고,
2. legacyMode도 더이상 사용하지 않는다.
 
1 때문에 굳이 session을 사용할 필요가 없으므로, 그냥 바로 RedisStore를 가져오면 된다.

const RedisStore = require("connect-redis").default;

다음과 같이 수정하면 다시 정상적으로 작동한다!
 
당시 문제 해결을 위해 한참동안 여러 블로그 글과 ChatGPT를 사용했는데, 정작 답을 얻은 건 공식 github 업데이트 로그였다. 영어라고 피할 게 아니라 문제가 생기면 공식 문서부터 봐야한다는 교훈을 얻었다ㅠㅠ