Respostas:
Eu resolvi esse problema da seguinte maneira:
Eu executo este comando:
npm config set strict-ssl false
Em seguida, defina npm para executar com http, em vez de https:
npm config set registry "http://registry.npmjs.org/"
Então eu instalo pacotes usando esta sintaxe:
npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
Ignore a username:password
parte se o proxy não exigir que você se autentique
EDIT: Um amigo meu acabou de referir que você pode obter NPM ao trabalho atrás de um proxy, definindo AMBOS HTTP_PROXY e https_proxy variáveis de ambiente, em seguida, emitir normalmente o comando npm instalar expressa (por exemplo)
EDIT2: Como o @BStruthers comentou, lembre-se de que as senhas que contêm "@" não serão analisadas corretamente, se contiver @, coloque a senha inteira entre aspas
my@password
, seu arquivo .npmrc deveria ter my%40password
a parte da senha. Colocá-lo entre aspas funciona em alguns casos, mas codificá-lo é infalível.
npm
Proxy de instalação
Para HTTP
:
npm config set proxy http://proxy_host:port
Para HTTPS
:
use o endereço de proxy https se houver um
npm config set https-proxy https://proxy.company.com:8080
caso contrário, reutilize o endereço de proxy http
npm config set https-proxy http://proxy.company.com:8080
Nota : O https-proxy não tem https
como protocolo, mas http
.
Em caso de dúvida, tente todos esses comandos, como eu:
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
=======
Coloque suas configurações em ~/.bashrc
ou ~/.bash_profile
para que você não precise se preocupar com as configurações sempre que abrir uma nova janela do terminal!
Se sua empresa é como a minha, preciso alterar minha senha com bastante frequência. Então eu adicionei o seguinte no meu ~ / .bashrc ou ~ / .bash_profile para que, sempre que abro um terminal, eu saiba que meu npm está atualizado!
Basta colar o seguinte código na parte inferior do seu ~/.bashrc
arquivo:
######################
# 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
Em seguida, edite os campos "nome de usuário", "senha" e "proxy" no código que você colou.
Abra um novo terminal
Verifique suas configurações executando npm config list
ecat ~/.npmrc
Tente instalar seu módulo usando
npm install __
ou npm --without-ssl --insecure install __
ou npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __
.-g
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
para a configuração do NPM e pacote de npm então instalado usando npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install {packagename}
. Obrigado
Você já tentou opções de linha de comando em vez do .npmrc
arquivo?
Eu acho que algo como npm --proxy http://proxy-server:8080/ install {package-name}
funcionou para mim.
Eu também vi o seguinte:
npm config set proxy http://proxy-server:8080/
Embora já existam muitos bons conselhos, para o meu ambiente (Windows 7, usando o PowerShell) e a última versão disponível do node.js (v8.1.2), todas as opções acima não funcionaram, exceto quando eu segui as configurações do brunowego .
Portanto, verifique suas configurações com:
npm config list
Configurações atrás de um proxy:
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
Espero que isso economize tempo para alguém
Isso funciona para mim no Windows:
npm config set proxy http://domain%5Cuser:pass@host:port
Se você não estiver em nenhum domínio, use:
npm config set proxy http://user:pass@host:port
Se a sua senha contém caracteres especiais, como "
, @
, :
e assim por diante, substituí-los por seus valores de URL codificado. Por exemplo "
-> %22
, @
-> %40
, :
-> %3A
. %5C
é usado para o personagem \
.
encodeURIComponent("YourP@ssword")
para obter a versão codificada da sua senha.
Para configurar o proxy http, tenha o sinalizador -g definido:
sudo npm config set proxy http://proxy_host:port -g
Para proxy https, verifique novamente se o sinalizador -g está definido:
sudo npm config set https-proxy http://proxy_host:port -g
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port
Isso funcionou para mim-
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 ~/.npmrc
na sua máquina Linux e adicione o seguinte. Não se esqueça de adicionar registry
peças, pois isso causa falha em muitos casos.
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
https-proxy=https://..
para #https-proxy=http://..
Finalmente, eu consegui resolver esse problema sendo um proxy atrás da autenticação do AD. Eu tive que executar:
npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/
É muito importante codificar por URL quaisquer caracteres especiais, como barra invertida ou # No meu caso, eu tive que codificar
backshlash
com% 5C, então domain\user will
sejadomain%5Cuser
#
assinar com %23%0A
a senha como Password#2
seráPassword%23%0A2
Também adicionei as seguintes configurações:
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
Embora eu defina o proxy com a configuração, o problema não foi resolvido, mas após este funcionou para mim:
npm --https-proxy http://XX.AA.AA.BB:8080 instalar o cordova-plugins
npm --proxy http://XX.AA.AA.BB:8080 instalar
Tentei todas essas opções, mas meu proxy não estava tendo nenhuma por algum motivo. Então, nascido do desespero / desespero, tentei aleatoriamente curl
no meu shell Git Bash e funcionou.
Desativando todas as opções de proxy usando
npm config rm proxy
npm config rm https-proxy
E, em seguida, correr npm install
no meu shell Git Bash funcionou perfeitamente. Não sei como ele está configurado corretamente para o proxy e o cmd
prompt do Windows não, mas funcionou.
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
Isso resolveu meu problema.
Finalmente, depois de vincular respostas diferentes, as quatro primeiras linhas de @Kayvar answers me ajudam a resolver o problema:
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
Isso funcionou para mim. Defina o proxy http e https.
Tente encontrar .npmrc em C: \ Users \ .npmrc
depois abra (bloco de notas), escreva e salve dentro:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS: remova "<" e ">" por favor !!
Para mim, embora o python etc funcione, o nosso proxy corporativo npm não funcionaria.
eu tentei
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/
conforme as instruções, mas continuava recebendo o mesmo erro.
Foi somente quando removi
https-proxy https://proxyccc.xxx.ca:8080
do arquivo .npmrc que o npm install electron --save-dev funcionou
https-proxy
provavelmente não é https:
. Pelo menos, ter a mesma porta para cada um provavelmente não está correto, mas acho que os dois provavelmente têm o mesmo valor.
No sistema Windows
Tente remover as configurações de proxy e registro (se já estiverem definidas) e defina variáveis de ambiente na linha de comando via
SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port
tente executar a instalação do npm. Por isso, você não definirá o proxy em .npmrc, mas para essa sessão ele funcionará.
SET HTTP_PROXY http://username:password@domain:port
, mas a mudança para SET HTTP_PROXY=http://username:password@domain:port
parecia ter tudo funcionando
Use o comando abaixo em cmd ou GIT Bash ou outro prompt
proxy do conjunto de configurações $ npm " http://192.168.1.101:4128 "
conjunto de configurações $ npm https-proxy " http://192.168.1.101:4128 "
onde 192.168.1.101 é proxy ip e 4128 é porta. altere de acordo com as suas configurações de proxy. funciona para mim.
Muitos aplicativos (por exemplo, npm) podem usar a configuração de proxy de variáveis de ambiente do usuário.
Você pode simplesmente adicionar ao seu ambiente as seguintes variáveis HTTP_PROXY e HTTPS_PROXY que terão o mesmo valor para cada uma
http: // usuário: senha @ proxyAddress: proxyPort
Por exemplo, se você possui o Windows, pode adicionar proxy da seguinte maneira:
No meu caso, esqueci de definir o "http: //" nos meus arquivos de configuração (podem ser encontrados em C: \ Users \ [USERNAME] \ .npmrc) endereços de proxy. Então, ao invés de ter
proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]
eu tinha
proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]
O que, obviamente, não funcionou, mas as mensagens de erro também não ajudaram muito ...
Houve muitas respostas acima para esta pergunta, mas nenhuma delas funcionou para mim. Todos eles mencionados para adicionar http://
prefixo. Então eu adicionei também. Tudo falhou.
Finalmente funciona depois que removi acidentalmente o http://
prefixo. A configuração final é assim:
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
Não sei a lógica por trás disso, mas funcionou. Se nenhuma das respostas acima funcionar para você, talvez você possa tentar dessa maneira. Espero que este seja útil.
Há boas informações na página do curl sobre questões de SSL e certificado . Baseei a maior parte da minha resposta nas informações existentes.
O uso de strict-ssl false é uma prática ruim e pode criar problemas. O que podemos fazer é adicionar o certificado que está sendo injetado pelo certificado "man in the middle".
Como resolver isso no Windows:
openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
npm config set cafile **C:\Users\username\cacert.pem
npm config set strict-ssl true
Ufa! Conseguimos! Agora o npm pode entender como se conectar. O bônus é que você pode dizer ao curl para usar o mesmo cabundle.pem e ele também entenderá HTTPs.
Aqui estão as etapas que eu segui (Windows):
C:\Users\<WIN_USERNAME>\.npmrc
Exporte o certificado para o seu sistema de arquivos do seguinte endereço: https://registry.npmjs.org
Navegue para o local do certificado exportado e emita o seguinte comando:
npm config set cafile npm_certificate.cer
Adicione as seguintes alterações ao arquivo:
registry=https://registry.npmjs.org/
strict-ssl=false
https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/
cafile=npm_certificate.cer
Agora você deve estar pronto para ir!
Meu problema se resumiu a um erro bobo da minha parte. Como um dia, rapidamente, coloquei meus proxies em um arquivo windows * .bat (http_proxy, https_proxy e ftp_proxy), esqueci de escapar dos caracteres especiais do domínio \ usuário (% 5C) e senha codificados por URL com o ponto de interrogação '?' (% 3F). Ou seja, depois de ter o comando codificado, não esqueça de escapar do '%' no comando bat file.
eu mudei
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
para
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
Talvez seja um caso extremo, mas espero que ajude alguém.
quando eu dou sem prefixo http / http nas configurações de proxy, o npm falhou mesmo quando o host e a porta do proxy estavam com os valores corretos. Funcionou apenas após adicionar o prefixo do protocolo.
Basta abrir o novo terminal e digite npm config edit
e npm config -g edit
. Redefinir para os padrões. Após esse terminal fechado, abra o novo e digite npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>
se você precisar globalmente basta adicionar -g
.
Funcionou para mim, espero que funcione para você :)