IT story

프록시 뒤에서 npm install (명령)을 작동시키는 방법이 있습니까?

hot-time 2020. 4. 7. 08:34
반응형

프록시 뒤에서 npm install (명령)을 작동시키는 방법이 있습니까?


.npmrc파일 에서 프록시 변수에 대해 읽었 지만 작동하지 않습니다. 모든 패키지를 수동으로 다운로드하지 않으려면 패키지가 필요합니다.


이 방법 으로이 문제를 해결했습니다.

  1. 이 명령을 실행합니다 :

    npm config set strict-ssl false
    
  2. 그런 다음 https 대신 http로 실행되도록 npm을 설정하십시오.

    npm config set registry "http://registry.npmjs.org/"
    
  3. 그런 다음이 구문을 사용하여 패키지를 설치합니다.

    npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
    

username:password프록시가 인증을 요구하지 않으면 부분을 건너 뛰십시오.

편집 : 광산의 친구가 당신이 설정하여 프록시 뒤에 작업에 NPM을 얻을 수 있음을 지적 BOTH 명령을 한 후, HTTP_PROXY와 https_proxy를 환경 변수를 정상적으로 발행 Express를 설치 NPM (예를 들어)

EDIT2 : @BStruthers가 언급했듯이, @이 포함 된 경우 전체 비밀번호를 따옴표로 묶으면 "@"가 포함 된 비밀번호는 올바르게 구문 분석되지 않습니다.


npm프록시 설정

의 경우 HTTP:

npm config set proxy http://proxy_host:port

의 경우 HTTPS:

https 프록시 주소가 있으면 사용하십시오

npm config set https-proxy https://proxy.company.com:8080

그렇지 않으면 http 프록시 주소를 재사용하십시오

npm config set https-proxy http://proxy.company.com:8080

참고 : https-proxy에는 https프로토콜이 없지만 http.


의심스러운 경우 다음과 같이 모든 명령을 시도하십시오.

npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080

npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \
--without-ssl --insecure -g install

=======

최신 정보

설정을 ~/.bashrc넣거나 ~/.bash_profile새 터미널 창을 열 때마다 설정에 대해 걱정할 필요가 없습니다!

귀하의 회사가 내 회사 인 경우 비밀번호를 자주 변경해야합니다. 그래서 터미널을 열 때마다 npm이 최신 상태임을 알 수 있도록 ~ / .bashrc 또는 ~ / .bash_profile에 다음을 추가했습니다!

  1. ~/.bashrc파일 하단에 다음 코드를 붙여 넣기 만하면 됩니다.

    ######################
    # User Variables (Edit These!)
    ######################
    username="myusername"
    password="mypassword"
    proxy="mycompany:8080"
    
    ######################
    # Environement Variables
    # (npm does use these variables, and they are vital to lots of applications)
    ######################
    export HTTPS_PROXY="http://$username:$password@$proxy"
    export HTTP_PROXY="http://$username:$password@$proxy"
    export http_proxy="http://$username:$password@$proxy"
    export https_proxy="http://$username:$password@$proxy"
    export all_proxy="http://$username:$password@$proxy"
    export ftp_proxy="http://$username:$password@$proxy"
    export dns_proxy="http://$username:$password@$proxy"
    export rsync_proxy="http://$username:$password@$proxy"
    export no_proxy="127.0.0.10/8, localhost, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16"
    
    ######################
    # npm Settings
    ######################
    npm config set registry http://registry.npmjs.org/
    npm config set proxy "http://$username:$password@$proxy"
    npm config set https-proxy "http://$username:$password@$proxy"
    npm config set strict-ssl false
    echo "registry=http://registry.npmjs.org/" > ~/.npmrc
    echo "proxy=http://$username:$password@$proxy" >> ~/.npmrc
    echo "strict-ssl=false" >> ~/.npmrc
    echo "http-proxy=http://$username:$password@$proxy" >> ~/.npmrc
    echo "http_proxy=http://$username:$password@$proxy" >> ~/.npmrc
    echo "https_proxy=http://$username:$password@$proxy" >> ~/.npmrc
    echo "https-proxy=http://$username:$password@$proxy" >> ~/.npmrc
    
    ######################
    # WGET SETTINGS
    # (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
    ######################
    echo "https_proxy = http://$username:$password@$proxy/" > ~/.wgetrc
    echo "http_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
    echo "ftp_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
    echo "use_proxy = on" >> ~/.wgetrc
    
    ######################
    # CURL SETTINGS
    # (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
    ######################
    echo "proxy=http://$username:$password@$proxy" > ~/.curlrc
    
  2. 그런 다음 붙여 넣은 코드에서 "username", "password"및 "proxy"필드를 편집하십시오.

  3. 새 터미널을여십시오

  4. 를 실행하여 설정을 확인 npm config list하고cat ~/.npmrc

  5. 사용하여 모듈을 설치하십시오

    • npm install __또는
    • npm --without-ssl --insecure install __또는
    • 을 사용하여 프록시 설정을 무시하십시오 npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __.
    • 모듈을 전체적으로 사용할 수있게하려면 옵션 추가 -g

.npmrc파일 대신 명령 행 옵션을 사용해 보셨습니까 ?

나는 같은 것이 npm --proxy http://proxy-server:8080/ install {package-name}나를 위해 일 했다고 생각한다 .

또한 다음을 보았습니다. npm config set proxy http://proxy-server:8080/


좋은 조언이 많이 있지만 내 환경 (Windows 7 PowerShell 사용)과 node.js (v8.1.2)의 마지막 버전에 대해서는 brunowego 설정을 따를 때를 제외하고 위의 모든 기능이 작동하지 않았습니다 .

따라서 다음을 사용하여 설정을 확인하십시오.

npm config list

프록시 뒤의 설정 :

npm config set registry http://registry.npmjs.org/
npm config set http-proxy http://username:password@ip:port
npm config set https-proxy http://username:password@ip:port
npm config set proxy http://username:password@ip:port
npm set strict-ssl false

이것이 누군가에게 시간을 절약 할 수 있기를 바랍니다.


http 프록시를 설정하려면 -g 플래그를 설정하십시오.

sudo npm config set proxy http://proxy_host:port -g

https 프록시의 경우 -g 플래그가 다시 설정되어 있는지 확인하십시오 .

sudo npm config set https-proxy http://proxy_host:port -g


이것은 Windows에서 나를 위해 작동합니다.

npm config set proxy http://domain%5Cuser:pass@host:port

도메인에 없으면 다음을 사용하십시오.

npm config set proxy http://user:pass@host:port

암호 같은 특수 문자가 포함 된 경우 ", @, :등, 자신의 URL 인코딩 된 값으로 교체합니다. 예를 들어 "-> %22, @-> %40, :-> %3A입니다. %5C캐릭터에 사용됩니다 \.


$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port

이것은 나를 위해 일했다.

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
npm set strict-ssl=false

vim ~/.npmrcLinux 시스템에서 다음을 추가하십시오. registry대부분의 경우 이로 인해 오류가 발생하므로 부분 을 추가하는 것을 잊지 마십시오 .

proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/

마지막으로 AD 인증으로 프록시 뒤에있는이 문제를 해결했습니다. 나는 실행해야했다.

npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/

backshlash 또는 #와 같은 특수 문자를 URL 인코딩하는 것이 매우 중요합니다. 제 경우에는 인코딩해야했습니다.

  1. backshlash% 5C domain\user willdomain%5Cuser
  2. #기호 %23%0A와 같은 암호가되도록 Password#2할 것Password%23%0A2

또한 다음 설정을 추가했습니다.

npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/

구성으로 프록시를 설정했지만 문제가 해결되지는 않았지만이 문제가 해결되었습니다.

npm --https-proxy http://XX.AA.AA.BB:8080 cordova-plugins 설치

npm --proxy http://XX.AA.AA.BB:8080 설치


나는이 모든 옵션을 시도했지만 프록시가 어떤 이유로 든 그것을 가지고 있지 않았습니다. 그런 다음 절망 / 절망에서 태어난 curlGit Bash 쉘에서 무작위로 시도해 보았습니다 .

다음을 사용하여 모든 프록시 옵션 설정 해제

npm config rm proxy
npm config rm https-proxy

그리고 npm install내 Git Bash 쉘에서 실행하면 완벽하게 작동했습니다. 프록시에 대해 올바르게 설정되어 있고 Windows cmd프롬프트가 어떻게 설정되어 있는지 잘 모르겠지만 작동했습니다.


npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/

이것은 내 문제를 해결했습니다.


@Kayvar Answers의 첫 번째 네 줄은 다른 답변을 마침내 묶은 후에 문제를 해결하는 데 도움이됩니다.

npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false

이것은 나를 위해 일했습니다. http 및 https 프록시를 설정하십시오.


C : \ Users \ .npmrc에서 .npmrc를 찾으십시오.

그런 다음 (메모장)을 열고 쓰고 내부에 저장하십시오.

proxy=http://<username>:<pass>@<proxyhost>:<port>

추신 : "<"와 ">"를 제거하십시오 !!


비록 우리 회사의 프록시 npm은 그렇지 않지만 파이썬 등은 모두 작동 할지라도.

나는 시도했다

npm config set proxy http://proxyccc.xxx.ca:8080 npm config set https-proxy https://proxyccc.xxx.ca:8080 npm config set registry http://registry.npmjs.org/

지시대로 그러나 같은 오류가 계속 발생합니다.

npm install electron --save-dev가 작동 한 것은 .npmrc 파일에서 제거 했을 때만였습니다.https-proxy https://proxyccc.xxx.ca:8080


cmd 또는 GIT Bash 또는 다른 프롬프트에서 아래 명령을 사용하십시오.

$ npm 구성 설정 프록시 " http://192.168.1.101:4128 "

$ npm 구성 세트 https-proxy " http://192.168.1.101:4128 "

여기서 192.168.1.101은 프록시 ip이고 4128은 포트입니다. 프록시 설정에 따라 변경하십시오. 그것은 나를 위해 작동합니다.


많은 응용 프로그램 (예 : npm)은 사용자 환경 변수의 프록시 설정을 사용할 수 있습니다.

HTTP_PROXYHTTPS_PROXY 변수에 따라 환경에 추가 할 수 있으며 변수 마다 동일한 값을 갖습니다.

http : // user : password @ proxyAddress : proxyPort

예를 들어 Windows가있는 경우 다음과 같이 프록시를 추가 할 수 있습니다.

Windows에서 어떻게 보이는지


Windows 시스템에서

프록시 및 레지스트리 설정을 제거하고 (이미 설정된 경우) 명령 행에서 환경 변수를 설정하십시오.

SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port

그런 다음 npm install을 실행하십시오. 이를 통해 .npmrc에 프록시를 설정하지는 않지만 해당 세션에서는 프록시가 작동합니다.


curl 및 인증서 문제 에 대한 curl 페이지에 대한 좋은 정보가 있습니다 . 나는 대부분의 답변을 그곳의 정보에 근거합니다.

strict-ssl false를 사용하는 것은 나쁜 습관이며 문제를 일으킬 수 있습니다. 우리가 대신 할 수있는 것은 "중간자"인증서에 의해 주입되는 인증서를 추가하는 것입니다.

Windows에서이를 해결하는 방법 :

  1. Mozilla의 CA 번들을 기반으로 curl 에서 CA 인증서를 다운로드하십시오 . curl의 "firefox-db2pem.sh"셸 스크립트를 사용하여 로컬 Firefox 데이터베이스를 변환 할 수도 있습니다.
  2. https를 사용하여 웹 페이지로 이동 (예 : Chrome 또는 Internet Explorer의 Stackoverflow)
  3. 자물쇠 아이콘을 클릭하고 Chrome에서 인증서보기 또는 "유효"를 클릭하십시오.
  4. 인증 경로로 이동하십시오. 최상위 인증서 또는 루트 인증서는 추출하려는 인증서입니다. 해당 인증서를 클릭 한 다음 "인증서보기"
  5. 두 번째 탭인 "세부 사항"을 클릭하십시오. "파일로 복사"를 클릭하십시오. DER 형식을 선택하고 파일을 저장 한 위치를 기록하십시오. rootcert.cer와 같은 적절한 파일 이름을 선택하십시오.
  6. Git을 설치했다면 openssl.exe를 갖게됩니다. 그렇지 않으면이 단계에서 git for windows를 설치하십시오. openssl 실행 파일은 대부분 C : \ Program Files \ git \ usr \ bin \ openssl.exe에 있습니다. openssl을 사용하여 파일을 NPM이 이해하는 데 필요한 PEM 형식으로 변환합니다.
  7. 다음 명령을 사용하여 5 단계에서 저장 한 파일을 변환하십시오.
    openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
    여기서 rootcert 는 5 단계에서 저장 한 인증서의 파일 이름입니다.
  8. 메모장이 아니라 줄 끝을 이해하기에 충분히 스마트 한 텍스트 편집기에서 outcert.pem을 엽니 다. 모든 텍스트를 선택하고 클립 보드에 복사하십시오.
  9. 이제 1 단계에서 만든 CA Cert 번들의 끝에 해당 내용을 붙여 넣습니다. 따라서 고급 텍스트 편집기 에서 cacert.pem엽니 다 . 파일 끝으로 이동하여 이전 단계에서 파일 끝으로 내용을 붙여 넣습니다. (방금 붙여 넣은 것 아래 빈 줄을 유지하십시오)
  10. 저장된 cabundle.pem을 적절한 위치에 복사하십시오. 예를 들어 % userprofile % 또는 ~. 파일 위치를 기록해 두십시오.
  11. 이제 npm / yarn에 새 번들을 사용하도록 지시합니다. 명령 행
    npm config set cafile **C:\Users\username\cacert.pem
    에서 C : \ Users \ username \ cacert.pem 이 10 단계의 경로임을 기록하십시오.
  12. 선택적으로 : strict-ssl을 다시 켜십시오. npm config set strict-ssl true

휴! 우리는 그것을 만들었다! 이제 npm은 연결 방법을 이해할 수 있습니다. 보너스는 curl에 동일한 cabundle.pem을 사용하도록 지시 할 수 있으며 HTTP도 이해할 수 있다는 것입니다.


필자의 경우 구성 파일 (C : \ Users \ [USERNAME] \. npmrc에 있음) 프록시 주소에서 "http : //"를 설정하는 것을 잊었습니다. 그래서 대신

proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]

나는했다

proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]

물론 작동하지 않았지만 오류 메시지는별로 도움이되지 않았습니다 ...


이 질문에 대한 많은 답변이 있었지만 그 중 어느 것도 나를 위해 일하지 않았습니다. 그들 모두는 http://접두사 를 추가한다고 언급했습니다 . 그래서 나는 그것을 추가했다. 모두 실패했습니다.

실수로 http://접두사를 제거한 후 마침내 작동 합니다. 최종 구성은 다음과 같습니다.

npm config set registry http://registry.npmjs.org/
npm config set http-proxy ip:port
npm config set https-proxy ip:port
npm config set proxy ip:port
npm set strict-ssl false

나는 이것의 논리를 모른다. 그러나 그것은 효과가 있었다. 위의 답변 중 어느 것도 효과가 없다면이 방법을 시도해 볼 수 있습니다. 이것이 유용하기를 바랍니다.


다음은 내가 수행 한 단계입니다 (Windows).

  1. 다음 파일을 편집하십시오 C:\Users\<WIN_USERNAME>\.npmrc
  2. 다음 주소에서 인증서를 파일 시스템으로 내보내십시오. https://registry.npmjs.org

  3. 내 보낸 인증서 위치로 이동하여 다음 명령을 실행하십시오.

    npm config set cafile npm_certificate.cer

  4. 파일에 다음 변경 사항을 추가하십시오. registry=https://registry.npmjs.org/ strict-ssl=false https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/ cafile=npm_certificate.cer

이제 갈 준비가되었습니다!


내 문제는 내 바보 같은 실수로 귀착했다. 언젠가 프록시를 Windows * .bat 파일 (http_proxy, https_proxy 및 ftp_proxy)에 빠뜨 렸으므로 URL 인코딩 된 도메인 \ 사용자 (% 5C)의 특수 문자와 물음표가있는 비밀번호를 피하는 것을 잊었습니다. '?' (% 3F). 즉, 일단 인코딩 된 명령이 있으면 bat 파일 명령에서 '%'를 이스케이프하는 것을 잊지 마십시오.

나는 바꿨다

set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080

set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080

어쩌면 가장자리 케이스 일 수도 있지만 누군가에게 도움이되기를 바랍니다.


프록시 설정에 http / http 접두사를 지정하지 않으면 프록시 호스트와 포트가 올바른 값이더라도 npm이 실패했습니다. 프로토콜 접두사를 추가 한 후에 만 ​​작동했습니다.


그냥 새 터미널을 열고 입력 npm config edit하고 npm config -g edit. 기본값으로 재설정하십시오. 터미널을 닫은 후 새 터미널을 열고 npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>전역 적으로 추가 해야하는 경우 입력 하십시오 -g.

그것은 나를 위해 일했습니다, 그것이 당신을 위해 일하기를 바랍니다 :)

참고 URL : https://stackoverflow.com/questions/7559648/is-there-a-way-to-make-npm-install-the-command-to-work-behind-proxy

반응형