Risposte:
Ho risolto questo problema in questo modo:
Eseguo questo comando:
npm config set strict-ssl false
Quindi impostare npm per l'esecuzione con http, anziché https:
npm config set registry "http://registry.npmjs.org/"
Quindi installo i pacchetti usando questa sintassi:
npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
Salta la username:password
parte se il proxy non richiede l'autenticazione
EDIT: Un mio amico ha appena sottolineato che potresti far funzionare NPM dietro un proxy impostando ENTRAMBI le variabili di ambiente HTTP_PROXY e HTTPS_PROXY, quindi emettendo normalmente il comando npm install express (ad esempio)
EDIT2: Come ha commentato @BStruthers, tieni presente che le password contenenti "@" non verranno analizzate correttamente, se contiene @ inserisci l'intera password tra virgolette
my@password
, il tuo file .npmrc dovrebbe avere my%40password
per la parte della password. Metterlo tra virgolette funziona in alcuni casi, ma codificarlo è infallibile.
npm
Proxy di installazione
Per HTTP
:
npm config set proxy http://proxy_host:port
Per HTTPS
:
usa l'indirizzo proxy https se ce n'è uno
npm config set https-proxy https://proxy.company.com:8080
altrimenti riutilizzare l'indirizzo proxy http
npm config set https-proxy http://proxy.company.com:8080
Nota : il proxy https non ha https
come protocollo, ma http
.
In caso di dubbi, prova tutti questi comandi, come faccio io:
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
=======
Metti le tue impostazioni in ~/.bashrc
o ~/.bash_profile
così non devi preoccuparti delle tue impostazioni ogni volta che apri una nuova finestra del terminale!
Se la tua azienda è come la mia, devo cambiare la mia password abbastanza spesso. Quindi ho aggiunto quanto segue nel mio ~ / .bashrc o ~ / .bash_profile in modo che ogni volta che apro un terminale, so che il mio npm è aggiornato!
Basta incollare il seguente codice nella parte inferiore del ~/.bashrc
file:
######################
# 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
Quindi modifica i campi "nome utente", "password" e "proxy" nel codice incollato.
Apri un nuovo terminale
Controlla le tue impostazioni eseguendo npm config list
ecat ~/.npmrc
Prova a installare il tuo modulo usando
npm install __
, o npm --without-ssl --insecure install __
, o 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
per la configurazione e NPM pacchetto NPM quindi installato utilizzando npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install {packagename}
. Grazie
Hai provato le opzioni della riga di comando invece del .npmrc
file?
Penso che qualcosa di simile abbia npm --proxy http://proxy-server:8080/ install {package-name}
funzionato per me.
Ho visto anche quanto segue:
npm config set proxy http://proxy-server:8080/
Sebbene ci siano già molti buoni consigli, per il mio ambiente (Windows 7, usando PowerShell) e l'ultima versione disponibile di node.js (v8.1.2) tutto quanto sopra non ha funzionato, tranne quando ho seguito le impostazioni di brunowego .
Quindi controlla le tue impostazioni con:
npm config list
Impostazioni dietro un 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
Spero che questo farà risparmiare tempo a qualcuno
Questo funziona per me in Windows:
npm config set proxy http://domain%5Cuser:pass@host:port
Se non si è in alcun dominio, utilizzare:
npm config set proxy http://user:pass@host:port
Se la password contiene caratteri speciali come "
, @
, :
e così via, li sostituisce con i loro valori URL codificato. Ad esempio "
-> %22
, @
-> %40
, :
-> %3A
. %5C
è usato per il personaggio \
.
encodeURIComponent("YourP@ssword")
per ottenere la versione codificata della tua password.
Per impostare il proxy http , impostare il flag -g :
sudo npm config set proxy http://proxy_host:port -g
Per il proxy https, assicurati di nuovo che il flag -g sia impostato:
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
Questo ha funzionato per me-
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
nella tua macchina Linux e aggiungi quanto segue. Non dimenticare di aggiungere una registry
parte poiché ciò causa errori in molti casi.
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
https-proxy=https://..
inhttps-proxy=http://..
Finalmente sono riuscito a risolvere questo problema essendo dietro proxy con autenticazione AD. Ho dovuto eseguire:
npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/
È molto importante codificare gli URL con caratteri speciali come backshlash o # Nel mio caso ho dovuto codificare
backshlash
con% 5C così domain\user will
siadomain%5Cuser
#
firmare con una %23%0A
password come Password#2
saràPassword%23%0A2
Ho anche aggiunto le seguenti impostazioni:
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
Sebbene abbia impostato il proxy con config, il problema non è stato risolto ma dopo Questo ha funzionato per me:
npm --https-proxy http://XX.AA.AA.BB:8080 installa plug-in cordova
npm --proxy http://XX.AA.AA.BB:8080 install
Ho provato tutte queste opzioni, ma il mio proxy non ne aveva nessuna per qualche motivo. Quindi, nato per disperazione / disperazione, ho provato curl
a caso nella mia shell Git Bash, e ha funzionato.
Deselezionando tutte le opzioni proxy usando
npm config rm proxy
npm config rm https-proxy
E poi correre npm install
nella mia shell Git Bash ha funzionato perfettamente. Non so come sia impostato correttamente per il proxy e il cmd
prompt di Windows non lo è, ma ha funzionato.
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
Questo ha risolto il mio problema.
Dopo aver collegato finalmente diverse risposte, le prime quattro righe delle risposte di @Kayvar mi aiutano a risolvere il 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
Questo ha funzionato per me. Imposta il proxy http e https.
Prova a trovare .npmrc in C: \ Users \ .npmrc
quindi apri (blocco note), scrivi e salva all'interno:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS: rimuovi "<" e ">" per favore !!
Per me, anche se Python ecc funzionerà, anche se il nostro proxy aziendale npm non lo farebbe.
Provai
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/
come indicato ma continuava a ricevere lo stesso errore.
È stato solo quando ho rimosso
https-proxy https://proxyccc.xxx.ca:8080
dal file .npmrc che npm install electron --save-dev ha funzionato
https-proxy
non è probabilmente https:
. Almeno, avere la stessa porta per ognuno probabilmente non è corretto, ma penso che entrambi abbiano probabilmente lo stesso valore.
Su sistema Windows
Prova a rimuovere le impostazioni del proxy e del registro (se già impostate) e imposta le variabili di ambiente sulla riga di comando tramite
SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port
quindi provare a eseguire npm install. In questo modo, non imposterai il proxy in .npmrc ma per quella sessione funzionerà.
SET HTTP_PROXY http://username:password@domain:port
ma il passaggio a SET HTTP_PROXY=http://username:password@domain:port
sembrava che tutto funzionasse
Utilizzare il comando seguente in cmd o GIT Bash o altri prompt
$ npm config set proxy " http://192.168.1.101:4128 "
$ npm config set https-proxy " http://192.168.1.101:4128 "
dove 192.168.1.101 è proxy ip e 4128 è porta. cambiare in base alle impostazioni del proxy. funziona per me.
Molte applicazioni (ad es. Npm) possono utilizzare le impostazioni proxy dalle variabili di ambiente dell'utente.
Puoi semplicemente aggiungere al tuo ambiente seguendo le variabili HTTP_PROXY e HTTPS_PROXY che avranno lo stesso valore per ognuna
http: // utente: password @ proxyAddress: proxyPort
Ad esempio se hai Windows puoi aggiungere proxy come segue:
Nel mio caso, ho dimenticato di impostare "http: //" nei miei file di configurazione (si trovano negli indirizzi proxy C: \ Users \ [USERNAME] \ .npmrc). Quindi invece di avere
proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]
avevo
proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]
Il che ovviamente non ha funzionato, ma i messaggi di errore non sono stati di grande aiuto ...
Ci sono state molte risposte sopra per questa domanda, ma nessuna di quelle ha funzionato per me. Tutti citati per aggiungere il http://
prefisso. Quindi l'ho aggiunto anch'io. Tutto fallito.
Funziona finalmente dopo che ho rimosso accidentalmente il http://
prefisso. La configurazione finale è così:
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
Non conosco la logica dietro questo, ma ha funzionato. Se nessuna delle risposte precedenti funziona per te, forse puoi provare in questo modo. Spero che questo sia utile.
Ci sono buone informazioni sulla pagina di curl su SSL e problemi di certificato . Baso gran parte della mia risposta sulle informazioni lì.
L'uso di strict-ssl false è una cattiva pratica e può creare problemi. Quello che possiamo fare invece è aggiungere il certificato che viene iniettato, dal certificato "man in the middle".
Come risolverlo su 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
Accidenti! Ce l'abbiamo fatta! Ora npm può capire come connettersi. Il bonus è che puoi dire a curl di usare lo stesso cabundle.pem e capirà anche gli HTTP.
Ecco i passaggi che ho seguito (Windows):
C:\Users\<WIN_USERNAME>\.npmrc
Esporta il certificato nel tuo file system dal seguente indirizzo: https://registry.npmjs.org
Passare al percorso del certificato esportato ed emettere il seguente comando:
npm config set cafile npm_certificate.cer
Aggiungi le seguenti modifiche al file:
registry=https://registry.npmjs.org/
strict-ssl=false
https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/
cafile=npm_certificate.cer
Ora dovresti essere pronto per partire!
Il mio problema è derivato da un errore sciocco da parte mia. Dato che un giorno avevo rapidamente lasciato cadere i miei proxy in un file Windows * .bat (http_proxy, https_proxy e ftp_proxy), ho dimenticato di sfuggire ai caratteri speciali per il dominio \ user (% 5C) con codifica URL e la password con il punto interrogativo '?' (% 3F). Vale a dire, una volta che hai il comando codificato, non dimenticare di sfuggire a '%' nel comando file bat.
Ho cambiato
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
per
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
Forse è un caso limite, ma si spera che aiuti qualcuno.
quando do senza prefisso http / http nelle impostazioni proxy npm fallito anche quando l'host proxy e la porta erano valori corretti. Ha funzionato solo dopo aver aggiunto il prefisso del protocollo.
Basta aprire il nuovo terminale e digitare npm config edit
e npm config -g edit
. Ripristina impostazioni predefinite. Dopo quel terminale vicino, apri quello nuovo e digita npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>
se hai bisogno a livello globale basta aggiungere -g
.
Ha funzionato per me, spero che funzionerà per te :)