Windows에서 인증 프록시 뒤에 NPM을 설치하는 방법은 무엇입니까?


30

Windows에서 최신 버전의 Node 및 NPM을 실행해야합니다. Node 0.5.8을 설치하고 GitHub에서 NPM 소스를 다운로드했습니다. NPM을 설치하기 위해 수행 한 단계는 GitHub 사이트에 나열되어 있지만 다음 명령을 실행하는 데 문제가 있습니다.

node cli.js install npm -gf

그러나 다음 오류 메시지와 함께 실패합니다.

Error: connect UNKNOWN
at errnoException (net_uv.js:566:11)
at Object.afterConnect [as oncomplete] (net_uv.js:557:18)

System Windows_NT 5.1.2600
command "...\\Node\\bin\\node.exe" "...\\npm\\cli.js" "install" "npm" "-gf"
cwd ...\npm
node -v v0.5.8
npm -v 1.0.94
code UNKNOWN

인터넷에 연결하려면 프록시에서 인증이 필요하기 때문에 이것이 문제라고 생각합니다. 그러나 설치 프로그램이 로그인에 내 자격 증명을 사용하도록 지시 할 방법을 찾지 못했습니다. 명령 행 인수를 통해 프록시 IP 및 로그인 정보를 npm 설치에 제공 할 가능성이 있습니까?

필요한 경우 pastebin을 사용하여 전체 로그를 제공 할 수는 있지만 더 이상 관련 정보가없는 것 같습니다.


6
약간의 트릭, 사용자 이름에 domain \ user 표기법이 포함 된 경우 백 슬래시를 http 이스케이프 코드 (% 5C)로 대체하십시오.

@layos 정말 감사합니다. 이것이 레딧이라면 금을 주겠다.
Korinna

답변:


39

set http_proxy정말 잘 작동했지만 명령 프롬프트를 열 때마다 입력해야했습니다. 그래서 여러 답변을 결합해야했고 이제는 영구적입니다.

내 순서는 다음과 같습니다.

  • 로 이동 C:\Users\YourUserName
  • 라는 파일을 만듭니다 .npmrc
  • 해당 파일 안에 다음을 입력하십시오 (AD 도메인에있는 경우).

proxy = http://domain\\username:password@ip:port

  • 또는 AD 도메인에 있지 않은 경우 사용하십시오.

proxy = http://username:password@ip:port

  • 파일 저장
  • 명령 프롬프트를 열고 사용하십시오 npm

다른 사람들은 다음과 같은 추가 명령으로 추가 성공을 거두었습니다.

strict-ssl = false

* 위의 "IP"대신 IP 주소 또는 프록시의 URL을 사용할 수 있어야합니다.

프록시 문자열을 약간 조정해야 할 수도 있지만 매번 이것을 추가 할 필요가 없도록 만들었습니다.

건배


3
비밀번호에 "@"가 포함되어 있으면 npm은 프록시 설정을 올바르게 구문 분석하지 않습니다. 가능한 해결 방법은 npm 구성에 가짜 username : password를 넣고 fiddler와 같은 로컬 프록시를 사용하여 요청의 Proxy-Authorization 헤더를 수정하여 올바른 username : password를 갖도록하는 것입니다. Proxy-Authorization에 저장된 username : password는 base64로 인코딩되어 있습니다.
BStruthers

9
내 작업을 진행했습니다 :proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false
Luke

1
내 username : password
philx_x

1
domain\\user:password@urltoproxy:port그러나 npm install옵션 변경 사항을 실행할 때 사용하려고했는데 domain/user:password@urltoproxy:port어떻게 해결합니까?
Jacob Schneider

내 .npmrc에 @JacobSchneider과 같은 문제가 발생 해요 : -ssl=false registry=http://registry.npmjs.org/ proxy=http://domain\\username:password#@proxy.url:8080 그때와 설정에서 설정을받을 때 npm config get proxy: http://domain/username:password#@proxy.url:8080 메모를 그 이스케이프 백 슬래시 슬래시 '/'로 '\\'변경
pompalini

10

환경 변수를 설정하면 효과가 있습니다.

set HTTP_PROXY=http://user:pass@server.url:port

(내 경우에는 "연결 UNKNOWN"을 해결하지만 완전히 다른 "소켓 끊기"오류가 발생합니다. 또한 HTTPS_PROXY 환경 변수 설정을 시도했지만 동일한 결과를 얻었습니다.)


환경 변수 설정을 시도하고 --proxy user : pass@server.url : port 를 명령에 전달하려고 시도 했지만 이제는 항상 ECONNREFUSED를 얻습니다. 프록시 로그인을 위해 AD 도메인을 지정해야합니까?
Tobias

@Tobias 시도set HTTP_PROXY=http://domain\user:pass@server.url:port
Adam Grant

8

나는이 동일한 문제가 있었고 여기 에이 일을하기 위해했던 일이 있습니다.

  • 이동 : C:\Users\YourUserName
  • 라는 파일을 만듭니다 .npmrc
  • 그리고 항목은 다음과 같습니다.

    registry = http://registry.npmjs.org
    
  • 명령을 node cli.js install npm -gf다시 시도 하십시오.


언급 한 내용으로 파일을 만들었지 만 여전히 연결 UNKNOWN 오류가 발생합니다. (
Tobias

이것을 위해 건배. "npm config set registry registry.npmjs.org "를 사용하여 https : //를 돌아 다녔으며 모든 것이 Windows 설정에 있습니다.
Gavin Gilmour

1
누군가 ETIMEOUT 메시지를 받으면 다음과 같이 프록시 설정을 추가하십시오.node config set proxy http://username:password@server:port
Jeremy S.

나를 위해 일한 ~/.npmrc것은 위와 같은 파일 을 만드는 것이 었습니다 http://https://http_proxyhttp://myusername:mypassword@proxy.company.com:1234
.npm

비밀번호에 "@"가 포함되어 있으면 npm은 프록시 설정을 올바르게 구문 분석하지 않습니다. 가능한 해결 방법은 npm 구성에 가짜 username : password를 넣고 fiddler와 같은 로컬 프록시를 사용하여 요청의 Proxy-Authorization 헤더를 수정하여 올바른 username : password를 갖도록하는 것입니다. Proxy-Authorization에 저장된 username : password는 base64로 인코딩되어 있습니다.
BStruthers

4

몇 가지 연구를 한 후에 다음과 같이 사용할 수 있습니다.

  1. NTLM Authorization Proxy Server 또는 Cntlm과 같은 NTLM 용 다른 프록시 서버를 설치하십시오. 개인적으로, 나는 파이썬 서버를 선호합니다.

  2. 구성을 설정하십시오. 필자의 경우 LM 및 NT 모드를 모두 활성화해야했으며 현재는 정상적인 경우라고 생각합니다.

  3. http_proxy 및 https_proxy 환경 변수가 로컬 프록시를 가리 키도록 설정하십시오.

    http_proxy = "localhost :
    5865 " 설정 https_proxy = "localhost : 5865 " 설정

  4. npm은 이제 작동해야합니다. 물론 위의 환경 변수가 정의 된 쉘에서 실행해야합니다.


3

다음은 나를 위해 일했습니다.

Windows 7 :

npm config set proxy xxhttp://username:password@proxyhost:port# 

이것은라는 이름의 파일을 생성해야합니다 .npmrcC:/users/<username>폴더를.


3

이것을 명령 행에 입력하십시오 :

npm set proxy http://user:pass@ip:port

npm set https-proxy http://user:pass@ip:port

사용자 이름 앞에 HTTP : // 를 포함하는 것을 잊지 마십시오. 그것은 나를 위해 일했다.


2

이 문제 는 위와 같이 .npmrc 파일을 만든 다음 adduser 명령을 실행하고 cmd 프롬프트를 수행 한 후에 해결되었습니다 .

npm adduser

인증 된 사용자 이름이 있는지 확인하려면 다음 쉼표를 실행하십시오.

npm whoami

2

위의 각 답변은 사용자가 텍스트 파일이나 환경 변수에 비밀번호를 작성해야합니다.

개인적으로 나는 안전하지 않은 접근 방식으로 이러한 솔루션을 좋아하지 않았습니다. 그래서 클라이언트 (npm, bower, git)와 프록시 간의 교환에 현재 사용자의 Kerberos 토큰을 주입하는 응용 프로그램을 작성하려고했습니다. 즉, Active Directory는 Kerberos의 독점 구현입니다.

이 소프트웨어는 매일 Windows 8.1 호스트에서 사용합니다. https://github.com/nilleb/authentication-proxy 에서 코드 (golang) 및 첫 번째 릴리스 바이너리를 찾을 수 있습니다 .


1

세 가지 모두 .npmrc에서 나를 위해 일했습니다.

proxy = http://unam:pwd@host:port
https-proxy = http://unam:pwd@host:port
registry = http://registry.npmjs.org

1

적어도 Windows에서는 다음 설정으로 작동합니다.

proxy = http : // 도메인 % 5C 사용자 이름 : password @ proxy_ip : 포트

즉, (1) (다른 곳에서 제안한대로 ) %5C대신에 사용 \하고 (2) 프록시 서버의 로컬 컴퓨터 이름 대신 IP 주소를 사용하십시오.


도메인 + 사용자 이름과 비밀번호는 URL로 별도로 인코딩해야합니다. 예를 들어, 비밀번호가 # 인 경우 % 23으로 교체하십시오
ail at

1

서버 관리자 나 지원으로부터 프록시 호스트와 포트를 얻습니다.

그 설정 후

npm config set http_proxy http://username:password@proxyofmycomp.com:itsport
npm config set proxy http://username:password@proxyofmycomp.com:itsport

비밀번호에 특수 문자가 있으면 % urlencode로 시도하십시오. 예 :-파운드 (해시) shuold는 % 23으로 대체됩니다.


2
3 년 전에 질문 한 경우 어떤 버전의 답변이 적용됩니까?
Jason Aller

나는 그것이 중요하지 않다는 것을 믿습니다. ...) : 나는 많이 시도한 후이 문제에 대한 해결책을 발견하고 비밀번호는 상관없이 질문 심지어 십년 전에 물어되지 않았다 완벽한 anwser 수 있도록 issue.In 순서를 만드는 것을 알지도 못하는
Shamseer

0

나를 위해 일한 해결책은 다음과 같습니다.

npm 구성 세트 http_proxy http : // username : password @ host / IP : port

npm 구성 설정 프록시 http : // username : password @ host / IP : port

필자의 경우 매개 변수를 값으로 바꾸십시오.

username : (빈)

비밀번호 : (비어 있음)

호스트 / IP : 192.36.36.110

포트 : 8080

그래서 내 명령은

npm 구성 세트 http_proxy http : // : @ 192.36.36.110 : 8080

npm 구성 세트 프록시 http : // : @ 192.36.36.110 : 8080


0

CNTLM은 나를 위해 작동하지 않았습니다. 가능한 모든 조합을 시도했습니다. NPM에서 인증 오류가 발생했습니다. 피들러가 구조를 위해 와서 내 시간을 절약했습니다. 설치 및 구성이 쉽습니다. 피들러 규칙을 자동 인증으로 설정합니다.

registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false

그것은 나를 위해 일했다 :)


0

나를 위해 일한 것은 다음과 같습니다.

registry=http://registry.npmjs.org
proxy=http://<url.pac>
https-proxy=http://<url.pac>
http-proxy=http://<url.pac>
strict-ssl=false

사용자 이름이나 비밀번호를 입력 할 필요없이 PAC 파일 URL 만 입력하면됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.