Para expandir a resposta @Steve Roberts.
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:
npm config set proxy "http://domain\username:password@servername:port/"
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
// option one
// it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
// option two
// it works best for me
// please notice that I actually used a space
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
// option two (B) as of 2019-06-01
// no DOMAIN
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://user name:password@x.x.x.x:port"
npm config set proxy "http://user name:password@x.x.x.x:port"
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:
- É uma
DOMAIN
sequência necessária para autenticação
- Você precisa codificar caracteres especiais?
- Os espaços e os sinais (@) são especialmente desafiadores
Saudaçõ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:
rem notice that the value after the = has no quotations
rem - I believe that if quotations are placed after it, they become
rem part of the value, you do not want that
rem notice that there is no space before or after the = sign
rem - if you leave a space before it, you will be declaring a variable
rem name that includes such space, you do not want to do that
rem - if you leave a space after it, you will be including the space
rem as part of the value, you do not want that either
rem looks like there is no need to URL encode stuff in there
SET HTTP_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
SET HTTPS_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
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:
- caramanchão
- vagabundo
- caixa virtual (executando linux)
- apt-get [linux]
- git
- vscode
- colchetes
- átomo
- tsd
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
- Aberto
C:\Program Files\Cntlm\cntlm.ini
(você pode precisar de direitos de administrador)
- procure
Username
e Domain
linhas (linha 8-9 eu acho)
- adicione seu nome de usuário
- adicione seu domínio
No prompt do cmd, execute:
cd C:\Program Files\Cntlm\
cntlm -M
cntlm -H
- você será solicitado a senha:
cygwin warning:
MS-DOS style path detected: C:\Program Files\Cntlm\cntlm.ini
Preferred POSIX equivalent is: /Cntlm/cntlm.ini
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Password:
A saída que você obtém cntlm -H
será semelhante a:
PassLM 561DF6AF15D5A5ADG
PassNT A1D651A5F15DFA5AD
PassNTLMv2 A1D65F1A65D1ASD51 # Only for user 'user name', domain 'DOMAIN'
- Recomenda-se que você use PassNTLMv2 para adicionar uma
#
linha antes PassLM
e PassNT
ou não usá-los
- Cole a saída
cntlm -H
no arquivo ini, substituindo as linhas por PassLM
, PassNT
e PassNTMLv2
, ou comente as linhas originais e adicione as suas.
- Adicione seus
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 a AutoConfigURL
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.
- Opcionalmente, você pode alterar a porta na qual o cntlm escuta, alterando a
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 este
http://localhost:3128
Com o comando apropriado:
proxy do conjunto de configurações npm http: // localhost: 3128
É 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 npm config set strict-ssl false
(grande não-não).
Etapas básicas
- Obtenha o certificado no seu navegador (o Chromes funciona bem). Exporte-o como X.509 codificado em Base-64 (.CER)
- Substitua novas linhas por
\n
- Edite sua
.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.