npm 패키지 버전의 중요성(feat. socket.io와undefined )

장서연·2021년 4월 11일
1
post-thumbnail

소켓통신을 위해 코드를 작성 중, 분명 다른 사람의 코드는 잘 돌아가는데, 그것을 똑같이 적용한 내 코드에서는 소켓의 프로퍼티가 정의되지 않았다는 에러가 났다.
TypeError: Cannot read property 'emit' of undefined
.....𝙒𝙝𝙮𝙧𝙖𝙣𝙤...

장장 3시간의 삽질로 지쳤을 무렵, '혹시 socket.io모듈의 버전 문제가 아닐까'하는 마음에, 잘 돌아가는 프로젝트의 socket.io버전을 확인한 결과 ^2.3.0버전이었다. 내 프로젝트에서도 downgrade한 결과 소켓 통신이 제대로 작동했다.

socket.io 4.3.1 ➡ socket.io 2.3.0

아무리 구글링 해봐도 버전에 관한 말이 없어 버전 문제는 아니겠거니와 했는데, 역시 버전 문제였다.

npm으로 어떤 모듈을 설치할 때, 반드시 최신버전이 필요한 것은 아니다. 오히려 이번처럼 그 이하의 버전이 필요하다.

설치된 모듈의 버전을 바꾸는 방법은 아래와 같다.

$ npm install '모듈명' 버전
$ npm install socket.io 2.3.0

$ npm install '모듈명'@^ 버전
npm install socket.io@^2.3.0

여기서 ^기호는 앞의 버전 값인 2를 유지하고 최신 버전 설치를 의미한다. 즉 2.x.x 버전이 설치된다.

0개의 댓글