Preciso fazer o download de vários pacotes através do npm, mas nossa configuração de proxy corporativo é um arquivo .pac (eu estou no windows)
Eu já tentei
npm config set proxy http://mydomain\username:[email protected]:8181/proxy.pac
npm config set https-proxy http://mydomain\username:[email protected]:8181/proxy.pac
ou
npm config set proxy http://1.2.3.4:8181/proxy.pac
npm config set https-proxy http://1.2.3.4:8181/proxy.pac
mas não funciona ...
alguma sugestão? obrigado
proxy.pac
arquivo para obter o endereço proxy. (No meu caso, eu simplesmente tive que mudar de porta para 8080).Respostas:
Acabei de ter um problema muito semelhante, em que não conseguia que o npm trabalhasse atrás do nosso servidor proxy.
Meu nome de usuário tem o formato "domínio \ nome de usuário" - incluindo a barra na configuração do proxy resultou na exibição de uma barra. Então, inserindo isso:
executando isso
npm config get proxy
retorna: http: // domínio / nome de usuário: senha @ nome do servidor: porta /Portanto, para corrigir o problema, em vez disso, codifiquei a URL na barra invertida e inseri isso:
e com isso o acesso ao proxy foi corrigido.
fonte
strict-ssl=false
ao.npmrc
arquivo de configuração resolvido para mim por trás de um proxy corporativo - veja as respostas em @ ovidiu-buligan e @ karthikeyan-aProcure o URL do
pac
arquivo nas configurações de LAN do Internet Explorer e faça o download do arquivo pac a partir da URL configurada. O arquivo pac é apenas um arquivo javascript com uma função denominadaFindProxyForURL
que retorna diferentes hosts proxy em diferentes cenários.Tente encontrar um host nesse arquivo pac que você considere ser para o tráfego geral da web e conecte-o ao .npmrc
C:\Users\<username>\.npmrc
Mesmo que você possa fazer login com seu domínio e nome de usuário em sua máquina corporativa, é altamente possível que o nome de domínio do diretório ativo do usuário não seja necessário para o proxy , apenas o nome de usuário e a senha (que podem ser diferentes do seu login no Active Directory)
Não se esqueça de mexer nos caracteres de senha especiais que escapam.
fonte
Faça o download do seu
.pac
arquivo. Abra-o em qualquer editor e procurePROXY = "PROXY X.X.X.X:80;
. Você pode ter muitos proxies, copie qualquer um deles e execute os seguintes comandos do terminal:Agora você deve conseguir instalar qualquer pacote!
fonte
git config --global http.proxy http://X.X.X.X:80
git config --global https.proxy http://X.X.X.X:80
Eu resolvi esse problema da seguinte maneira:
1) Eu executo este comando:
npm config set strict-ssl false
2) Em seguida, defina npm para executar com http, em vez de https:
npm config set registry "http://registry.npmjs.org/"
3) Em seguida, instale seu pacote
npm install <package name>
fonte
ca[]
propriedade no npm.Para expandir a resposta @Steve Roberts.
Também tive que codificar por URL minha
domain\user
string, no entanto, tenho um espaço dentro do meu nome de usuário, então coloquei a+
para codificar a codificação de URL de espaço, mas ela seria codificada duas vezes como%2B
(que é a codificação de URL para o sinal de mais, no entanto, a URL codificação para um espaço é%20
), então eu tive que fazer o seguinte:comando npm
solução de problemas de configuração do npm
Eu usei o
npm config list
para obter os valores analisados que eu havia definido acima, e foi assim que descobri a codificação dupla. Esquisito.Essencialmente, você deve descobrir os seguintes requisitos:
DOMAIN
sequência necessária para autenticaçãoSaudações.
VARIÁVEIS AMBIENTAIS DO WINDOWS (prompt do CMD)
Atualizar
Acontece que, mesmo com as configurações acima, eu ainda tinha alguns problemas com alguns pacotes / scripts que usam o cliente HTTP Request - Simplified internamente para baixar coisas. Portanto, como o leia-me acima explicou, podemos especificar variáveis de ambiente para definir o proxy na linha de comandos, e Request irá respeitar esses valores.
Então, depois (e reluto em admitir isso) de várias tentativas (mais parecidas com dias), de tentar definir as variáveis de ambiente, finalmente consegui as seguintes diretrizes:
cntlm
Usei a técnica acima por algumas semanas, até perceber a sobrecarga de atualizar minha senha em todas as ferramentas que precisavam da configuração do proxy.
Além do npm, eu também uso:
Etapas de instalação do cntlm
Então, eu instalei o cntlm . A configuração
cntlm
é bastante direta, você procura o arquivo ini @C:\Program Files\Cntlm\cntlm.ini
C:\Program Files\Cntlm\cntlm.ini
(você pode precisar de direitos de administrador)Username
eDomain
linhas (linha 8-9 eu acho)No prompt do cmd, execute:
A saída que você obtém
cntlm -H
será semelhante a:#
linha antesPassLM
ePassNT
ou não usá-loscntlm -H
no arquivo ini, substituindo as linhas porPassLM
,PassNT
ePassNTMLv2
, ou comente as linhas originais e adicione as suas.Proxy
servidores. Se você não souber o que é o servidor proxy ... Faça o que fiz, procurei meu arquivo de configuração automática de proxy procurando aAutoConfigURL
chave do Registro emHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
. Navegue até esse URL e veja o código que passa a ser JavaScript.Listen ####
linha, onde####
está o número da porta.Configurar NPM com cntlm
Então, você aponta o npm para o seu proxy cntml, pode usar o ip, eu usei
localhost
e a porta padrão para o cntlm,3128
para que o meu URL do proxy se pareça com esteCom o comando apropriado:
É muito mais simples. Você configura todas as suas ferramentas com o mesmo URL e atualiza a senha apenas em um local. A vida é muito mais simples, não.
É necessário configurar O certificado CA npm
Na documentação do npm ca
Se o seu proxy corporativo estiver interceptando conexões https com seu próprio certificado autoassinado, é necessário evitar
(grande não-não).npm config set strict-ssl false
Etapas básicas
\n
.npmrc
adição de uma linhaca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
Problemas
Percebi que, às vezes, o tipo NPM trava, então paro (às vezes com força) o cntlm e o reinicio.
fonte
Eu tive vários problemas com isso e, finalmente, o que fiz foi o seguinte:
Nas regras personalizadas do violinista, adicionei
Finalmente, no npm, defino o proxy como http: // localhost: 8888
Isso funcionou bem.
fonte
"domain\\username:password"
pode representar uma ameaça à segurança do roubo de identidade. Em vez disso, o uso da"(default)"
configuração nas regras personalizadas funcionou encantadoramente. O Fiddler precisa estar em execução enquanto você usa "npm" para que isso funcione.Para quem está enfrentando um firewall corporativo, além de problemas com SSL (não é possível obter o certificado do emissor local), aqui estão algumas etapas que você pode tentar:
Esqueça o SSL
Se você não estiver preocupado com SSL, poderá seguir os conselhos de muitos colaboradores anteriores, configurando seus proxies e alterando o registro para a versão não segura:
Uma rápida "dica" aqui, minhas credenciais de proxy são as mesmas para solicitações protegidas e não protegidas (observe como deixei meu protocolo como http: // para a configuração do proxy https ). Pode ser o mesmo para você e pode não ser.
Eu quero manter o SSL
Se você deseja manter o SSL e não deseja usá
strict-ssl=false
-lo, há mais trabalho a fazer. Para mim, estou protegido por um firewall corporativo e estamos usando certificados autoassinados, então recebo o errounable to get local issuer certificate
. Se você estiver no mesmo barco que eu, precisará definir acafile=
opção no arquivo de configuração npm. Primeiro, você precisa criar um arquivo PEM que contenha informações sobre seus certificados autoassinados. Se você não souber como fazer isso, aqui estão as instruções para um ambiente Windows sem usar software de terceiros:Precisamos indicar explicitamente quais certificados devem ser confiáveis, porque estamos usando certificados de autoassinatura. No meu exemplo, naveguei para www.google.com usando o Chrome para obter os certificados.
No Chrome, vá para Inspecionar -> Segurança -> Exibir certificado. Você verá todos os certificados que permitem a conexão SSL. Observe como esses certificados são autoassinados. A parte confusa é a minha empresa e não somos uma Autoridade Certificada. Você pode exportar o caminho completo do certificado como um arquivo P7B ou exportar os certificados individualmente como arquivos CER (codificação base64). Exportar o caminho completo como P7B não é muito bom, pois você precisará abrir esse arquivo em um gerenciador de certificados e exportar como arquivos CER individuais de qualquer maneira. No Windows, clicar duas vezes no arquivo P7B abrirá o aplicativo Gerenciador de Certificados.
Exportar como CER (Base 64) é realmente um arquivo de texto no seguinte formato:
Para criar nosso arquivo PEM, precisamos simplesmente empilhar esses certificados um sobre o outro em um único arquivo e alterar a extensão para .pem. Eu usei o bloco de notas para fazer isso.
Você empilha os certificados na ordem inversa do caminho do certificado. Assim, acima, eu começaria com * .google.com e colaria o Websense abaixo dele, depois emitindo CA 1 etc. Dessa forma, os certificados são analisados de cima para baixo, procurando a CA raiz apropriada. A simples inclusão da CA raiz não funcionará, mas também não precisamos incluir todos os certificados. No caminho acima, preciso incluir apenas os certificados anteriores ao certificado Websense (CA de emissão 1, CA de política, CA raiz).
Depois que esses certificados autoassinados são salvos em um arquivo PEM, estamos prontos para instruir o npm a usar esses certificados como nossa CA confiável. Basta definir o arquivo de configuração e você deve estar pronto:
Agora, com seus proxies definidos (http e https) e o registro definido como
https://registry.npmjs.org
, você poderá instalar pacotes atrás de um firewall corporativo com certificados autoassinados sem alterar astrict-ssl
configuração.fonte
Você pode verificar o Fiddler se o NPM está dando erro de autenticação. É fácil de instalar e configurar. Defina a regra do violinista como Autenticada automaticamente. Em .npmrc defina essas propriedades
Funcionou para mim :)
fonte
Tente isso, defina o proxy em npm da seguinte maneira
fonte
Você receberá o host e a porta do proxy do administrador ou do suporte do servidor.
Depois disso configurado
Se houver algum caractere especial na senha, tente com% urlencode. Por exemplo: - libra (hash) deve ser substituída por% 23.
Isso funcionou para mim ...
fonte
Basta criar um arquivo chamado .npmrc na pasta do seu projeto, para evitar a configuração de proxy no nível do sistema
Comente assim se você não usar o proxy
fonte
Nenhuma das respostas existentes explica como usar o npm com um arquivo PAC. Alguns sugerem o download do arquivo PAC, a inspeção manual e a escolha de uma das seqüências "PROXY ...". Mas isso não funciona se o arquivo PAC precisar escolher entre vários proxies ou se o arquivo PAC contiver uma lógica complexa para ignorar proxies para determinados URLs.
Além disso, alguns proxies corporativos exigem autenticação NTLM. O CNTLM pode lidar com autenticação, mas não suporta arquivos PAC.
Uma alternativa é usar o Alpaca , que executa o arquivo PAC em uma VM JavaScript e executa a autenticação NTLM com o proxy resultante.
fonte
Se você está atrás de uma rede corporativa com proxy, usei apenas uma ferramenta de proxy ntlm e usei a porta e o proxy fornecidos pelo ntlm, por exemplo, usei esta configuração:
Eu espero que isso ajude.
fonte
Use o comando abaixo no cmd ou GIT Bash ou outro prompt
onde 192.168.1.101 é proxy ip e 4128 é porta. altere de acordo com as suas configurações de proxy.
fonte
Você deve usar "npm config set http-proxy "
usar:
fonte
No trabalho, usamos o ZScaler como nosso proxy. A única maneira de conseguir que o npm funcionasse era usar o Cntlm .
Veja esta resposta:
NPM atrás do proxy NTLM
fonte
Tente isso, foi o único que funcionou para mim:
npm --proxy http: //: @proxyhost: --https-proxy http: //: @proxyhost: --strict-ssl false install -g pacote
Preste atenção à opção --strict-ssl false
Boa sorte.
fonte
A configuração do proxy NPM mencionada na resposta aceita resolve o problema, mas como você pode ver neste problema do npm , algumas dependências usam o GIT e isso torna necessária a configuração do proxy git , e pode ser feito da seguinte maneira:
A configuração do proxy NPM mencionou:
fonte
Eu tive um problema semelhante e tentei todas as soluções alternativas acima, mas nenhuma delas funcionou para mim (eu estava usando caracteres especiais (como o símbolo '@') na minha senha e também precisava adicionar o nome de domínio).
Além disso, fiquei um pouco apreensivo ao adicionar minha senha como texto simples. A solução mais fácil de superar todos esses desafios foi usar algum tipo de proxy reverso (como o Fiddler).
Eu já detalhei as etapas de configuração nesta resposta no SO.
fonte
Adicionar as linhas abaixo no arquivo .typingsrc me ajudou.
fonte
Corri para um problema semelhante e descobri que meu arquivo de configuração npm (.npmrc) está tendo entrada incorreta no Registro. comentou e correu o npm install. funcionou.
fonte
OS: Windows 7
Etapas que funcionaram para mim:
npm config get proxy
npm config get https-proxy
Comentários: Eu executei este comando para conhecer minhas configurações de proxy
npm config rm proxy
npm config rm https-proxy
npm config set registry=http://registry.npmjs.org/
npm install
fonte
Como ainda tenho problemas para definir as configurações de proxy no trabalho e desativá- las em casa, criei um script e publico o npm-corpo-proxy.sh . Em todo corpo, a senha deve ser alterada frequentemente e deve conter caracteres especiais, que devem ser codificados antes da alimentação do npm config (o mesmo para o domínio \ usuário do formulário de backash).
fonte
De uma pequena pesquisa no google, a primeira coisa que tentei foi esta
Mas ainda assim o npm parecia perder a conexão ao tentar fazer a instalação do "npm". então eu corri esta linha no prompt de comando e agora posso usar o npm install
fonte
Não consegui fazê-lo funcionar com o CNTLM. Tentei seguir todas as informações postadas acima, mas o proxy ainda não autorizou a conexão. Com o Fiddler, você apenas precisa instalá-lo e verificar a opção Autenticado automaticamente. Mas, para trabalhar, eu tive que remover o arquivo .npmrc da minha pasta de usuário e definir as variáveis de ambiente conforme indicado aqui , com estes valores:
fonte