728x90
문제 상황
npm으로 어떤 패키지를 설치하던 저 상태에서 멈추고, 설치에 너무 오랜 시간이 걸린다. 가장 슬픈 것은 대부분의 경우 TIMEOUT으로 설치도 못한다는 것...
문제 원인
npm이 이상하거나, 네트워크가 이상하거나, node가 이상하거나, 내가 wsl2 설정에서 메모리를 너무 적게 줬다거나 하는 이유가 있을 것 같다. 하지만 검색해봐도 정확한 원인은 알 수 없었다. (간혹 wsl의 속도가 윈도우에서의 속도에 한참 못 미치는 사람도 있었지만 나의 경우에는 네트워크 속도도 정상적이었다)
해결 방법
npm이나 node를 재설치하거나 proxy설정을 건드리거나 해서 해결하는 것 같은데, 나는 재설치하거나 고치려고 하다 더 안 좋아지는 경우가 더 많았고, 시간도 그렇게 많지 않아서 docker를 이용해 해결하기로 했다. docker의 v옵션으로 현재 저장공간을 컨테이너 안에 bind mount한 다음, 컨테이너 내부의 npm을 사용하는 것이다.
# 내 앱이 담겨있는 컨테이너를 띄운다
docker run -it -d -p 3000:3000 -v 로컬절대경로/my-app:/my-app node:16.13.1
# docker ps를 입력하고 거기서 나오는 컨테이너 아이디를 복사한다.
docker ps
# 이렇게 하면 컨테이너 내부에 들어가진다.
docker exec -it 컨테이너ID /bin/bash
# 내가 설치하고 싶은 패키지를 설치한다.
# -v 옵션으로 로컬과 컨테이너 내부의 저장공간이 연결(공유)되어있기 때문에 로컬에도 패키지가 잘 설치된다.
npm install pg typeorm @nestjs/typeorm --save
이렇게 하니 npm이 가만히 멈추지도 않고, 잘 설치되었다.
이후 개발을 컨테이너를 띄어놓고 해도 되고 아니면 설치할 때만 이렇게 해서 설치해도 된다.
다음엔 배포를 해보겠습니당.
바위
728x90
'코딩코딩 > 웹개발' 카테고리의 다른 글
express 프로젝트 설정하기 - 근데 이제 pre-commit에 eslint와 prettier를 곁들인 (0) | 2022.07.08 |
---|---|
node pre-commit 훅 설정하는데 참고한 글들 (0) | 2022.07.07 |
[flutter] type 'ListView' is not a subtype of type 'List<Widget> (0) | 2022.03.25 |
[flutter] flutter socketexception os error connection refused errno = 111 (0) | 2022.03.24 |
[postgresql] docker-compose에서 지정하는 환경변수 목록 (0) | 2022.03.24 |
댓글