Existe uma forma de fazer com que o npm instale (o comando) funcione por trás do 'proxy'?
Leia sobre uma variável 'proxy' num ficheiro .npmrc
mas não funciona. Tentando evitar o Download manual de todos os pacotes necessários e instalação.
25 answers
-
Eu comando este comando:
npm config set strict-ssl false
-
Então defina o MPN para correr com o http, em vez de https:
npm config set registry "http://registry.npmjs.org/"
-
Depois instalo pacotes usando esta sintaxe:
npm --proxy http://username:[email protected]:80 \ install packagename
ignorar a parte username:password
Se o 'proxy' não necessitar que você autentique
Editar: um amigo meu acabou de dizer que você pode conseguir que o NPM trabalhe atrás de um 'proxy', definindo ambos HTTP_ proxy e Variáveis de ambiente HTTPS_ proxy, depois emitindo normalmente o comando MPN install express (por exemplo)
EDIT2: como @BStruthers comentou, tenha em mente que as senhas que contêm " @ " não serão processadas correctamente
Configuração npm
proxy
Para HTTP
:
npm config set proxy http://proxy_host:port
Para HTTPS
:
npm config set https-proxy http://proxy.company.com:8080
Nota : o 'https-proxy' não tem https
como protocolo, mas http
.
Quando em dúvida, tente todos estes comandos, como eu faço:
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:[email protected]:8080
npm config set https-proxy http://myusername:[email protected]:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:[email protected]:8080
set HTTP_PROXY=http://myusername:[email protected]:8080
export HTTPS_PROXY=http://myusername:[email protected]:8080
export HTTP_PROXY=http://myusername:[email protected]:8080
export http_proxy=http://myusername:[email protected]:8080
npm --proxy http://myusername:[email protected]:8080 \
--without-ssl --insecure -g install
=======
Actualizar
Coloque as suas configurações em ~/.bashrc
ou ~/.bash_profile
para que não tenha de se preocupar com as suas configurações sempre que abrir uma nova janela de terminal!
-
Basta colar o seguinte código no fundo do seu ficheiro
~/.bashrc
:###################### # 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" username", "password" e "proxy" no código que colou.
Abrir um novo terminal
Verifique a sua configuração executando
npm config list
ecat ~/.npmrc
-
Tente instalar o seu módulo usando
-
npm install __
, ou -
npm --without-ssl --insecure install __
, ou - sobreponha a sua configuração do 'proxy' usando
npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __
. - Se quiser que o módulo esteja disponível globalmente, adicione a opção
-g
-
Já tentou as opções da linha de comandos em vez do ficheiro .npmrc
?
npm --proxy http://proxy-server:8080/ install {package-name}
funcionou para mim.
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 PowerShell) e a última versão disponível do node.js (v8.1.2 ) todos os elementos acima referidos não funcionaram, excepto quando segui brunowego.
Verifique a sua configuração com:
npm config list
Configuração por detrá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 isto poupe tempo a alguém.
Para configurar o 'proxy' de http tem a opção -G:
sudo npm config set proxy http://proxy_host:port -g
Para o 'proxy' do https, certifique-se novamente de que a bandeira -g está definida:
sudo npm config set https-proxy http://proxy_host:port -g
Isto funciona para mim nas janelas:
npm config set proxy http://domain%5Cuser:pass@host:port
Se não estiver em nenhum domínio, use:
npm config set proxy http://user:pass@host:port
Se a sua senha contiver caracteres especiais, tais como:"
,@
,:
e assim por diante, substitua-os pelos seus valores codificados URL. Por exemplo "
->%22
, @
->%40
, :
->%3A
. %5C
é usado para o carácter \
.
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port
Embora eu tenha definido o 'proxy' com a configuração, o problema não foi resolvido, mas depois Este funcionou comigo.
MPN --https-proxy http://XX.AA.AA.BB:8080 instalar os 'plugins' de cordova
MPN -- proxy http://XX.AA.AA.BB:8080 Instalar
curl
na minha concha Git Bash, e funcionou.
Desligar todas as opções do 'proxy' com
npm config rm proxy
npm config rm https-proxy
E depois correr na minha concha Git Bash funcionou perfeitamente. Eu não sei como é configurado corretamente para o proxy e o prompt do Windows cmd
não é, mas funcionou.
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
em sua máquina Linux e adicionar seguinte. Não se esqueça de adicionar {[[2]} parte porque isso causa falha em muitos casos.
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
- configuração de configuração do npm http://proxy.company.com:8080
- configuração do npm https-proxy http://proxy.company.com:8080
Então abra (bloco de notas), escreva e salve dentro:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS: remover " " por favor !!
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
Isto resolveu o meu problema.
Usar abaixo do comando em cmd ou Git Bash ou outra linha de comandos
$ npm configure proxy " http://192.168.1.101:4128"
$ npm configuração https-proxy " http://192.168.1.101:4128"
Onde 192.168.1.101 é proxy ip e 4128 é port. muda de acordo com a configuração do 'proxy'. funciona comigo.
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/
Como instruído, mas continuava a ter o mesmo erro.
Só foi quando eu removi
https-proxy https://proxyccc.xxx.ca:8080
do ... ficheiro npmrc
que
npm install electron --save-dev worked
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:[email protected]:8080
npm config set https-proxy http://myusername:[email protected]:8080
npm config set strict-ssl false
No sistema Windows
Tente remover a configuração do 'proxy' e do registo (se já estiver definida) e definir as variáveis de ambiente na linha de comandos via
SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port
Depois tente executar o npm install. Com isto, não vai colocar o proxy .npmrc mas para essa sessão ele vai funcionar.
Muitas aplicações (por exemplo, npm) podem usar a configuração de 'proxy' a partir de variáveis de ambiente do utilizador.
Você pode simplesmente adicionar ao seu ambiente seguintes variáveis HTTP_PROXY e HTTPS_PROXY que terá o mesmo valor para cada um
Http://user:password@proxyAddress:proxyPort
Por exemplo, se tiver janelas, pode adicionar o 'proxy' da seguinte forma:
No meu caso, esqueci-me de definir o "http://" nos meus ficheiros de configuração (pode ser encontrado em C: \Users \ [utilizador] \ .o 'proxy' do npmrc adere. Então, em vez de ter
proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]
Eu tinha
proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]
O que, claro, 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. Por isso, também o adicionei. Todos falharam.
Finalmente funciona depois de eu ter removido acidentalmente http://
o 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 detrás disto, mas funcionou. Se nenhuma das respostas acima funciona para ti, talvez possas tentar desta maneira. Espero que este seja útil.
Quando passo sem o prefixo http / http na configuração do 'proxy', o MPN falhou, mesmo quando a máquina e o porto do 'proxy' eram valores correctos. Ele só funcionou depois de adicionar o prefixo do protocolo.
Mudei
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
A
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
Talvez seja um caso extremo. mas espero que ajude alguém.
existe uma boa informação na página do curl sobre o SSL e as emissões de Certificados . Baseio a maior parte da minha resposta na informação lá.
Usar strict-ssl false é uma má prática e pode criar problemas. O que podemos fazer em vez disso é adicionar o certificado que está sendo injetado, pelo certificado "homem no meio".
Como resolver isto no Windows:
- descarregue os certificados de AC decurl com base no pacote de AC do Mozilla. Você também pode usar curl's "firefox-db2pem.sh" shellscript to convert your local Firefox database.
- vá para uma página web usando https, por exemplo Stackoverflow em Chrome ou Internet Explorer
- carregue no ícone Bloquear, carregue em ver certificados ou "válido" no Chrome
- navegue até ao caminho de Certificação. O certificado de topo, ou o certificado de raiz é o que queremos extrair. Carregue nesse certificado e, em seguida, "ver certificado"
- Clique na segunda página, "Detalhes". Carregue Em " Copiar arquivar". Escolha o formato DER e tome nota de onde você gravar o arquivo. Escolha um nome de ficheiro adequado, como rootcert.cer
- Se tiver o Git instalado, terá o openssl.exe. Caso contrário, instale o git para o windows Nesta fase. O mais provável é que o executável openssl esteja em C:\Program Files\git\usr\bin\openssl.exe. Vamos usar openssl para converter o arquivo para o formato PEM que precisamos para NPM para entendê-lo.
- converta o ficheiro que gravou no Passo 5 usando isto comando:
openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
em que rootcert é o nome do ficheiro do certificado que gravou no Passo 5. - abra o exterior.pem em um editor de texto inteligente o suficiente para entender terminações de linha, então não o bloco de notas. Seleccione todo o texto e copie-o para a área de transferência.
- Agora vamos colar esse conteúdo até ao fim do pacote de certs da AC feito no Passo 1. Então abre o cacert.pem no seu editor de texto avançado. Ir para o fim do ficheiro e colar o conteúdo do passo anterior até ao fim do arquivo.
- copia a cabundle salva.pem para um lugar adequado. Por exemplo, o seu %userprofile% ou ~. Anote a localização do arquivo. Agora vamos dizer ao npm / fio para usar o novo pacote. Numa linha de comando, escreva
npm config set cafile **C:\Users\username\cacert.pem
em que C:\Users\username\cacert.pem é o caminho a partir do passo 10. Opcionalmente: liga o strict-ssl outra vez,
npm config set strict-ssl true
Ufa! Conseguimos! Agora o MPN pode entender como se conectar. O bónus é que podes dizer ao curl para usar o mesmo cabundle.pem e ele também vai entender HTTPs.