npm에는 별도의 proxy와 https-proxy 설정이 있습니다. 차이는 요청하는 목적지입니다. HTTPS를 터널링하는 일반 HTTP 프록시라면 두 값이 같은 http:// 엔드포인트를 가리킬 수 있습니다.

프로젝트 수준 .npmrc에는 다음을 넣을 수 있습니다.

proxy=http://203.0.113.10:8080
https-proxy=http://203.0.113.10:8080
noproxy=localhost,127.0.0.1,registry.example.internal

문서용 엔드포인트를 자신의 프록시로 바꾸세요. 허용된 공개 레지스트리 테스트에는 HTTP 프록시 목록이 HTTP 후보를 제공합니다. 마지막 줄은 명시한 내부 레지스트리를 의도적으로 직접 연결에 둡니다. 다른 프록시 주소가 아닙니다.

npm에 요청을 보내게 하세요

캐시 설치는 경로 테스트로 부적절합니다. npm이 필요한 것을 이미 모두 가지고 있을 수 있습니다. 레지스트리 ping은 더 작은 확인입니다.

npm ping --registry=https://registry.npmjs.org/

성공적인 완료는 이번 npm 호출이 해당 레지스트리 경로에 도달했음을 보여줍니다. 모든 tarball 호스트, Git 종속성, 별도 패키지 관리자 프로세스가 같은 경로를 쓴다는 증거는 아닙니다.

충돌하는 설정을 찾으려면 곧바로 다른 파일을 수정하지 말고 실제 적용 값을 확인하세요.

npm config get proxy
npm config get https-proxy
npm config get noproxy

URL에 자격 증명이 들어 있으면 이 명령들이 이를 출력할 수 있습니다. 출력을 로컬에서 확인하고 이슈에 그대로 붙여 넣지 마세요.

프로젝트 .npmrc는 전역 설치에 쓰이지 않습니다. npm install -g만 실패한다면 프로젝트 파일을 읽었다고 가정하지 말고 그 호출의 실제 설정을 확인하세요.

IP를 바꾸기 전에 예외를 확인하세요

npm은 프록시 환경 변수도 사용하며 noproxy는 NO_PROXY에서 올 수 있습니다. 실제 설정에서 제외된 목적지는 프록시 값이 있어도 직접 연결할 수 있습니다. 반대로 한 .npmrc에서 줄을 지워도 상속받은 환경 변수는 없어지지 않습니다.

인증서 오류는 분리하세요

허가된 검사 프록시에는 조직 CA가 필요할 수 있습니다. Node/npm 환경이 아직 이를 신뢰하지 않을 수 있습니다. npm은 CA 파일을 지원합니다.

cafile=/path/to/approved-ca-bundle.pem
strict-ssl=true

그 환경에서 실제 승인된 번들을 사용하세요. strict-ssl=false는 인증서 검증을 약화합니다. 올바른 프록시나 신뢰 자료를 선택하는 일을 대신하지 않습니다.

테스트가 끝나면 추가한 프로젝트 재정의 설정을 지우고 실제 적용 값을 다시 확인하세요. 같은 컴퓨터의 다른 프로젝트를 바꾸지 않고 이전 설정을 상속할 수 있습니다.

관련 글