Como instalar o NPM por trás do proxy de autenticação no Windows?


30

Preciso executar a versão mais recente do Node e NPM no Windows. Instalei o Node 0.5.8 e baixei as fontes do NPM no GitHub. As etapas que segui para instalar o NPM foram listadas no site do GitHub, mas tenho um problema ao executar o seguinte comando:

node cli.js install npm -gf

mas falha com a seguinte mensagem de erro:

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

Acho que isso é um problema, pois preciso de autenticação no meu proxy para conectar-me à Internet. Mas não encontrei maneira de dizer ao instalador para usar minhas credenciais para o login. Existe a possibilidade de fornecer meu IP de proxy e informações de login para a instalação do npm talvez por meio de argumentos da linha de comando?

Posso fornecer o log completo (mas parece não ter mais informações relevantes) usando pastebin, se necessário.


6
Um pequeno truque, se o nome de usuário contém o domínio \ notação usuário substituto a barra invertida com o código http escape (% 5C)

@layos Muito obrigado. Se isso fosse reddit, eu daria a você ouro.
31513 Korinna

Respostas:


39

set http_proxyfuncionou muito bem para mim, mas eu precisava inseri-lo toda vez que abria o prompt de comando. Então eu tive que combinar várias respostas e agora a minha é permanente.

Minha sequência foi a seguinte:

  • Vamos para C:\Users\YourUserName
  • Crie um arquivo chamado .npmrc
  • Dentro desse arquivo, digite o seguinte (se você estiver em um domínio do AD):

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

  • Ou use isto: você NÃO está em um domínio do AD:

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

  • Salve o arquivo
  • Abra um prompt de comando e tente usar npm

Outros tiveram sucesso extra com o seguinte comando extra:

strict-ssl = false

* Você deve poder usar um endereço IP ou o URL para o proxy no lugar de "IP" acima.

Pode ser necessário ajustar um pouco a sua sequência de proxy, mas isso fez com que eu não precisasse adicionar isso todas as vezes.

Felicidades


3
Atenção, se sua senha contiver "@" npm não analisará sua configuração de proxy corretamente. Uma solução potencial é colocar um nome de usuário falso: senha na configuração do npm e usar um proxy local (como um violinista) para modificar o cabeçalho de Autorização de Proxy da solicitação para ter o nome de usuário correto: senha. Lembre-se de que o nome de usuário: a senha armazenada na Autorização Proxy é codificada em base64.
BStruthers

9
Tenho o meu para trabalhar com:proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false
Luke

1
Não recebemos mina para trabalhar com username: password
philx_x

1
Ei, eu tentei usar domain\\user:password@urltoproxy:portno entanto, quando executo npm installa opção muda para domain/user:password@urltoproxy:portEntão, como faço para resolver isso?
Jacob Schneider

Estou tendo o mesmo problema que @JacobSchneider, no meu .npmrc: -ssl=false registry=http://registry.npmjs.org/ proxy=http://domain\\username:password#@proxy.url:8080 então, quando eu configuro o config com npm config get proxy: http://domain/username:password#@proxy.url:8080 observe que a barra invertida escapada '\\' muda para uma barra '/'
pompalini 04/04

10

Talvez a configuração de uma variável de ambiente funcione para você:

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

(No meu caso, isso resolve o "connect UNKNOWN", mas recebo um erro "socket hang up" completamente diferente. Também tentei definir a variável de ambiente HTTPS_PROXY, mas obtive o mesmo resultado.)


Tentei definir a variável de ambiente e também passei o comando --proxy user: pass@server.url: port para o comando, mas agora sempre recebo ECONNREFUSED .. Preciso especificar meu domínio do AD para o login do proxy?
Tobias

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

8

Eu tive esse problema idêntico e aqui está o que eu fiz para fazer esse trabalho:

  • Vamos para: C:\Users\YourUserName
  • Crie um arquivo chamado .npmrc
  • E sua entrada será:

    registry = http://registry.npmjs.org
    
  • Tente o comando node cli.js install npm -gfnovamente.


Eu criei o arquivo com o conteúdo que você mencionou, mas ainda obter o erro desconhecido connect :(
Tobias

Um brinde por isso. Fiz um "npm config set registry registry.npmjs.org " para contornar o https: // e tudo está bem na instalação do Windows.
Gavin Gilmour

1
se alguém recebe a mensagem ETIMEOUT adicionar configuração de proxy comnode config set proxy http://username:password@server:port
Jeremy S.

O que funcionou para mim foi a criação do ~/.npmrcarquivo, como acima, que diz npm usar o http://registro em vez de https://, e em seguida, definir a minha http_proxyvariável de ambiente parahttp://myusername:mypassword@proxy.company.com:1234
Maxy-B

Atenção, se sua senha contiver "@" npm não analisará sua configuração de proxy corretamente. Uma solução potencial é colocar um nome de usuário falso: senha na configuração do npm e usar um proxy local (como um violinista) para modificar o cabeçalho de Autorização de Proxy da solicitação para ter o nome de usuário correto: senha. Lembre-se de que o nome de usuário: a senha armazenada na Autorização Proxy é codificada em base64.
BStruthers

4

Após algumas pesquisas, eu poderia usá-lo desta maneira:

  1. Instale o servidor proxy de autorização NTLM ou outro servidor proxy para NTLM, como Cntlm. Pessoalmente, prefiro o servidor python, porque posso mexer nele, e o desempenho não é um problema.

  2. Defina a configuração; observe que, no meu caso, eu tive que ativar os modos LM e NT e suspeitaria que seja o caso normal atualmente.

  3. Defina a variável de ambiente http_proxy e https_proxy para apontar para o seu proxy local:

    definir http_proxy = "localhost: 5865"
    definir https_proxy = "localhost: 5865"

  4. O npm deve funcionar agora, é claro que deve ser executado a partir de um shell onde as variáveis ​​de ambiente acima são definidas.


3

O seguinte funcionou para mim.

No Windows 7:

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

Isso deve criar um arquivo nomeado .npmrcna C:/users/<username>pasta


3

Digite isso na linha de comando:

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

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

NÃO ESQUEÇA DE INCLUIR HTTP: // antes do seu nome de usuário. Funcionou para mim.


2

Esse problema foi resolvido depois de criar o arquivo .npmrc, conforme descrito acima, e executar o comando adduser e seguir as instruções do cmd.

npm adduser

Execute o seguinte comando para verificar se você possui um nome de usuário autorizado:

npm whoami

2

Cada uma das respostas acima precisa que o usuário escreva sua senha em um arquivo de texto ou em uma variável de ambiente.

Pessoalmente, não gostei de uma solução como essa, por sua abordagem insegura. Por isso, tentei escrever um aplicativo que injeta o token Kerberos do usuário atual nas trocas entre o cliente (npm, bower, git) e o proxy. Dito isto, o Active Directory é apenas uma implementação proprietária do Kerberos.

Eu uso esse software todos os dias, em um host do Windows 8.1. Você pode encontrar o código (golang) e os binários da primeira versão em https://github.com/nilleb/authentication-proxy .


1

Todas as três coisas funcionaram para mim em .npmrc

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

1

Pelo menos no Windows, ele funciona para mim com a seguinte configuração:

proxy = http: // domínio % 5C nome de usuário : senha @ proxy_ip : porta

ou seja, (1) use em %5Cvez de \(como sugerido em outro lugar) e (2) use o endereço IP em vez do nome da máquina local para o servidor proxy.


Isso está correto - o domínio + o nome de usuário e a senha precisam ser codificados em URL separadamente. Por exemplo, se você tiver # em sua senha, substitua-o por% 23
saille 14/08/15

1

Você receberá o host e a porta do proxy do administrador ou do suporte do servidor.

Depois disso configurado

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

Se houver algum caractere especial na senha, tente com% urlencode. Por exemplo: - libra (hash) deve ser substituída por% 23.


2
A quais versões sua resposta se aplica, considerando que a pergunta foi feita há mais de 3 anos?
Jason Aller

Eu acredito que isso não importa. Eu encontrei a solução para este problema depois de tentar muito e nunca soube que minha senha estava fazendo ordem issue.In para torná-lo anwser perfeito nenhuma pergunta assunto foi perguntado antes mesmo de dez anos:) ...
Shamseer

0

A solução trabalhada para mim é a seguinte:

npm config set http_proxy http: // nome do usuário : senha @ host / IP : porta

proxy do conjunto de configurações npm http: // nome do usuário : senha @ host / IP : porta

substituir os parâmetros pelos valores, no meu caso

nome de usuário : (vazio)

senha : (vazia)

host / IP : 192.36.36.110

porta : 8080

então meus comandos são

conjunto de configurações npm http_proxy http: //: @ 192.36.36.110: 8080

proxy do conjunto de configurações npm http: //: @ 192.36.36.110: 8080


0

O CNTLM não funcionou para mim. Eu tentei todas as combinações possíveis. O NPM estava dando erro de autenticação. Violinista veio em busca de resgate e economizou meu tempo. É fácil de instalar e configurar. Defina a regra do violinista como Autenticada automaticamente. Em .npmrc, defina

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

Funcionou para mim :)


0

O que funcionou para mim foi o seguinte:

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

Não precisei inserir nomes de usuário ou senhas, simplesmente o URL do arquivo PAC.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.