Come installare NPM dietro il proxy di autenticazione su Windows?


30

Devo eseguire l'ultima versione di Node e NPM su Windows. Ho installato il nodo 0.5.8 e scaricato le fonti di NPM da GitHub. I passaggi che ho seguito per installare NPM erano elencati sul suo sito GitHub ma ho un problema nell'esecuzione del comando seguente:

node cli.js install npm -gf

ma non riesce con il seguente messaggio di errore:

Error: connect UNKNOWN
at errnoException (net_uv.js:566:11)
at Object.afterConnect [as oncomplete] (net_uv.js:557:18)

System Windows_NT 5.1.2600
command "...\\Node\\bin\\node.exe" "...\\npm\\cli.js" "install" "npm" "-gf"
cwd ...\npm
node -v v0.5.8
npm -v 1.0.94
code UNKNOWN

Penso che questo sia un problema perché ho bisogno dell'autenticazione sul mio proxy per connettermi a Internet. Ma non ho trovato alcun modo per dire al programma di installazione di utilizzare le mie credenziali per l'accesso. Esiste la possibilità di fornire il mio IP proxy e le informazioni di accesso all'installazione di npm, magari tramite argomenti della riga di comando?

Sono in grado di fornire il registro completo (ma sembra non avere più informazioni pertinenti) utilizzando pastebin se necessario.


6
Un piccolo trucco, se il nome utente contiene il dominio \ notazione utente sostituisce la barra rovesciata con il codice di escape http (% 5C)

@layos Grazie mille. Se questo fosse reddit, ti darei oro.
Korinna,

Risposte:


39

set http_proxyha funzionato davvero bene per me, ma ho dovuto inserirlo ogni volta che ho aperto il prompt dei comandi. Quindi ho dovuto combinare più risposte e ora la mia è permanente.

La mia sequenza è stata la seguente:

  • Vai a C:\Users\YourUserName
  • Crea un file chiamato .npmrc
  • All'interno di quel file digitare quanto segue (se ci si trova in un dominio AD):

proxy = http://domain\\username:password@ip:port

  • Oppure usa questo se NON sei su un dominio AD:

proxy = http://username:password@ip:port

  • Salva il file
  • Apri un prompt dei comandi e prova a utilizzare npm

Altri hanno avuto un ulteriore successo con il seguente comando aggiuntivo:

strict-ssl = false

* Dovresti essere in grado di utilizzare un indirizzo IP o l'URL per il proxy al posto di "IP" sopra.

Potrebbe essere necessario modificare un po 'la stringa del proxy, ma ciò ha reso non necessario aggiungere questo ogni volta.

Saluti


3
Fai attenzione, se la tua password contiene "@" npm non analizzerà correttamente l'impostazione del proxy. Una possibile soluzione alternativa è inserire un nome utente fasullo: password nella configurazione npm e utilizzare un proxy locale (come il violinista) per modificare l'intestazione di autorizzazione proxy della richiesta in modo da avere il nome utente corretto: password. Tenere presente il nome utente: la password memorizzata in Proxy-Authorization è codificata in base64.
BStruthers,

9
Ho il mio con cui lavorare:proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false
Luca

1
il mio non ha funzionato con username: password
philx_x

1
Ehi, ho provato ad usare domain\\user:password@urltoproxy:portcomunque, quando eseguo npm installl'opzione cambia in domain/user:password@urltoproxy:portQuindi, come posso aggirare questo?
Jacob Schneider,

Sto riscontrando lo stesso problema di @JacobSchneider, sul mio .npmrc: -ssl=false registry=http://registry.npmjs.org/ proxy=http://domain\\username:password#@proxy.url:8080 quindi quando ricevo l'impostazione dalla configurazione con npm config get proxy: http://domain/username:password#@proxy.url:8080 nota che la barra rovesciata '\\' sfuggita cambia in una barra '/'
pompalini

10

Forse l'impostazione di una variabile d'ambiente funzionerà per te:

set HTTP_PROXY=http://user:pass@server.url:port

(Nel mio caso, questo risolve "connetti SCONOSCIUTO", ma ottengo un errore "riagganciare" completamente diverso. Ho anche provato a impostare la variabile di ambiente HTTPS_PROXY, ma ho ottenuto lo stesso risultato.)


Ho provato a impostare la variabile d'ambiente e ho anche provato a passare --proxy user: pass@server.url: porta al comando ma ora ottengo sempre ECONNREFUSED .. Devo specificare il mio dominio AD per il login proxy?
Tobias,

@Tobias provareset HTTP_PROXY=http://domain\user:pass@server.url:port
Adam Grant,

8

Ho avuto questo identico problema ed ecco cosa ho fatto per farlo funzionare:

  • Vai a: C:\Users\YourUserName
  • Crea un file chiamato .npmrc
  • E la sua voce leggerà:

    registry = http://registry.npmjs.org
    
  • Prova di node cli.js install npm -gfnuovo il comando .


Ho creato il file con i contenuti che hai citato ma ho ancora visualizzato l'errore SCONOSCIUTO di connessione :(
Tobias,

Saluti per questo. Ho fatto un "npm config set register register.npmjs.org " per aggirare https: // e tutto va bene sulla mia installazione di Windows.
Gavin Gilmour,

1
se qualcuno riceve il messaggio ETIMEOUT aggiungi l'impostazione proxy connode config set proxy http://username:password@server:port
Jeremy S.

Quello che ha funzionato per me è stato creare il ~/.npmrcfile come sopra, che dice a npm di usare il http://registro invece di https://, e quindi impostare la mia http_proxyvariabile di ambiente suhttp://myusername:mypassword@proxy.company.com:1234
Maxy-B

Fai attenzione, se la tua password contiene "@" npm non analizzerà correttamente l'impostazione del proxy. Una possibile soluzione alternativa è inserire un nome utente fasullo: password nella configurazione npm e utilizzare un proxy locale (come il violinista) per modificare l'intestazione di autorizzazione proxy della richiesta in modo da avere il nome utente corretto: password. Tenere presente il nome utente: la password memorizzata in Proxy-Authorization è codificata in base64.
BStruthers,

4

Dopo alcune ricerche, potrei usarlo in questo modo:

  1. Installare il server proxy di autorizzazione NTLM o un altro server proxy per NTLM, come Cntlm. Personalmente, preferisco il server Python, perché posso armeggiare con esso e le prestazioni non sono un problema.

  2. Impostare la configurazione; nota che nel mio caso, ho dovuto abilitare sia la modalità LM che NT e al giorno d'oggi sospetto che sia il caso normale.

  3. Imposta la variabile di ambiente http_proxy e https_proxy in modo che punti al tuo proxy locale:

    set http_proxy = "localhost: 5865"
    set https_proxy = "localhost: 5865"

  4. npm dovrebbe funzionare ora, ovviamente dovrebbe essere eseguito da una shell in cui sono definite le variabili di ambiente sopra.


3

Quanto segue ha funzionato per me.

Su Windows 7:

npm config set proxy xxhttp://username:password@proxyhost:port# 

Questo dovrebbe creare un file chiamato .npmrcnella C:/users/<username>cartella.


3

Digita questo nella riga di comando:

npm set proxy http://user:pass@ip:port

npm set https-proxy http://user:pass@ip:port

NON DIMENTICARE DI INCLUDERE HTTP: // prima del tuo nome utente. Ha funzionato per me.


2

Questo problema si è risolto per me dopo aver creato il file .npmrc come sopra, quindi aver eseguito il comando adduser e seguendo le istruzioni cmd.

npm adduser

Esegui il seguente comando per verificare se disponi di un nome utente autorizzato:

npm whoami

2

Ognuna delle risposte di cui sopra necessita che l'utente scriva la sua password in un file di testo o in una variabile di ambiente.

Personalmente non mi piaceva una soluzione come questa, per il loro approccio insicuro. Quindi ho provato a scrivere un'applicazione che inietta il token Kerberos dell'utente corrente negli scambi tra il client (npm, bower, git) e il proxy. Detto questo, Active Directory è solo un'implementazione proprietaria di Kerberos.

Uso questo software ogni giorno, su un host Windows 8.1. Puoi trovare il codice (golang) e i binari della prima versione su https://github.com/nilleb/authentication-proxy .


1

Tutte e tre le cose hanno funzionato per me in .npmrc

proxy = http://unam:pwd@host:port
https-proxy = http://unam:pwd@host:port
registry = http://registry.npmjs.org

1

Almeno in Windows, funziona per me con le seguenti impostazioni:

proxy = http: // dominio % 5C nome utente : password @ proxy_ip : porta

cioè, (1) usa %5Cinvece di \(come suggerito altrove) e (2) usa l'indirizzo IP invece del nome della macchina locale per il server proxy.


Questo è corretto: il dominio + nome utente e la password devono essere codificati separatamente tramite URL. Ad esempio, se hai # nella password, sostituiscilo con% 23
saille

1

Otterrai l'host proxy e la porta dal tuo amministratore o supporto server.

Dopo quello impostato

npm config set http_proxy http://username:password@proxyofmycomp.com:itsport
npm config set proxy http://username:password@proxyofmycomp.com:itsport

Se è presente un carattere speciale nella password, prova con% urlencode. Ad esempio: - la sterlina (hash) deve essere sostituita da% 23.


2
A quali versioni si applica la tua risposta dato che la domanda è stata posta oltre 3 anni fa?
Jason Aller,

Credo che non abbia importanza. Ho trovato la soluzione a questo problema dopo aver provato molto e non ho mai saputo che la mia password stava causando problemi.Per renderlo perfetto, non importava che fosse fatta una domanda anche prima di dieci anni
:)

0

La soluzione ha funzionato per me è la seguente:

npm config set http_proxy http: // nomeutente : password @ host / IP : porta

npm config set proxy http: // nome utente : password @ host / IP : porta

sostituisco i parametri con i valori, nel mio caso

nome utente : (vuoto)

password : (vuota)

host / IP : 192.36.36.110

porto : 8080

così sono i miei comandi

npm config set http_proxy http: //: @ 192.36.36.110: 8080

npm config set proxy http: //: @ 192.36.36.110: 8080


0

CNTLM non ha funzionato per me. Ho provato tutte le possibili combinazioni. NPM stava dando l'errore di autenticazione. Il violinista venne in soccorso e mi risparmiò tempo. È facile da installare e configurare. Imposta Fiddler Rule su Autentically Authenticated.In .npmrc imposta questi

registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false

Ha funzionato per me :)


0

Ciò che ha funzionato per me è stato il seguente:

registry=http://registry.npmjs.org
proxy=http://<url.pac>
https-proxy=http://<url.pac>
http-proxy=http://<url.pac>
strict-ssl=false

Non ho dovuto inserire nomi utente o password, semplicemente l'URL del file PAC.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.