Pour développer la réponse de @Steve Roberts.
Mon nom d'utilisateur est de la forme "domaine \ nom d'utilisateur" - y compris la barre oblique dans la configuration du proxy a entraîné l'apparition d'une barre oblique. Alors entrez ceci:
npm config set proxy "http://domain\username:password@servername:port/"
J'ai également dû encoder ma domain\user
chaîne en URL , cependant, j'ai un espace dans mon nom d'utilisateur, donc j'ai mis un +
pour encoder l'encodage de l'URL de l'espace, mais il serait encodé en double comme %2B
(qui est l'encodage d'URL pour le signe plus, mais l'URL l'encodage pour un espace est %20
), je devais donc à la place faire ce qui suit:
commande 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"
dépannage de la configuration npm
J'ai utilisé le npm config list
pour obtenir les valeurs analysées que j'avais définies ci-dessus, et c'est ainsi que j'ai découvert le double encodage. Bizarre.
Essentiellement, vous devez comprendre les exigences suivantes:
- Une
DOMAIN
chaîne est-elle requise pour l'authentification
- Avez-vous besoin d'encoder des caractères spéciaux?
- Les espaces et les panneaux (@) sont particulièrement difficiles
Cordialement.
VARIABLES D'ENVIRONNEMENT WINDOWS (invite CMD)
Mettre à jour
Il s'avère que même avec les configurations ci-dessus, j'avais encore des problèmes avec certains packages / scripts qui utilisent Request - Client HTTP simplifié en interne pour télécharger des éléments. Ainsi, comme l'explique le fichier readme ci-dessus, nous pouvons spécifier des variables d'environnement pour définir le proxy sur la ligne de commande, et Request honorera ces valeurs.
Ensuite, après (et je suis réticent à l'admettre) plusieurs essais (plus comme des jours), d'essayer de définir les variables d'environnement, j'ai finalement réussi avec les directives suivantes:
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
J'ai utilisé la technique ci-dessus pendant quelques semaines, jusqu'à ce que je réalise la surcharge de mise à jour de mon mot de passe sur tous les outils qui nécessitaient la configuration du proxy.
Outre npm, j'utilise également:
- tonnelle
- vagabond
- boîte virtuelle (exécutant Linux)
- apt-get [linux]
- git
- vscode
- supports
- atome
- tsd
Étapes de configuration de cntlm
Alors, j'ai installé cntlm . Le réglage cntlm
est assez direct, vous recherchez le fichier ini @C:\Program Files\Cntlm\cntlm.ini
- Ouvrir
C:\Program Files\Cntlm\cntlm.ini
(vous aurez peut-être besoin de droits d'administrateur)
- chercher
Username
et Domain
lignes (ligne 8-9 je pense)
- ajoutez votre nom d'utilisateur
- ajoutez votre domaine
À l'invite cmd, exécutez:
cd C:\Program Files\Cntlm\
cntlm -M
cntlm -H
- il vous sera demandé le mot de passe:
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:
La sortie que vous obtenez cntlm -H
ressemblera à quelque chose comme:
PassLM 561DF6AF15D5A5ADG
PassNT A1D651A5F15DFA5AD
PassNTLMv2 A1D65F1A65D1ASD51 # Only for user 'user name', domain 'DOMAIN'
- Il est recommandé d'utiliser PassNTLMv2 afin d'ajouter une
#
ligne avant PassLM
et PassNT
ou de ne pas les utiliser
- Collez la sortie à partir
cntlm -H
du fichier ini en remplaçant les lignes pour PassLM
, PassNT
et PassNTMLv2
, ou commentez les lignes d'origine et ajoutez les vôtres.
- Ajoutez vos
Proxy
serveurs. Si vous ne savez pas ce qu'est le serveur proxy ... Faites ce que j'ai fait, j'ai cherché mon fichier de configuration automatique du proxy en recherchant la AutoConfigURL
clé de registre dans HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
. Accédez à cette URL et parcourez le code qui se trouve être JavaScript.
- En option, vous pouvez changer le port sur lequel cntlm écoute en changeant la
Listen ####
ligne, où ####
est le numéro de port.
Configurer NPM avec cntlm
Donc, vous pointez npm vers votre proxy cntml, vous pouvez utiliser l'ip, j'ai utilisé localhost
et le port par défaut pour cntlm 3128
afin que mon URL de proxy ressemble à ceci
http://localhost:3128
Avec la commande appropriée:
npm config set proxy http: // localhost: 3128
C'est beaucoup plus simple. Vous configurez tous vos outils avec la même URL et vous ne mettez à jour le mot de passe qu'à un seul endroit. La vie n'est pas tellement plus simple.
Doit configurer le certificat de l'autorité de certification npm
À partir de la documentation npm ca
Si votre proxy d'entreprise intercepte les connexions https avec son propre certificat auto-signé, il est indispensable d'éviter npm config set strict-ssl false
(gros non-non).
Etapes de base
- Obtenez le certificat de votre navigateur (Chromes fonctionne bien). Exportez -le au format X.509 encodé en Base 64 (.CER)
- Remplacer les nouvelles lignes par
\n
- Modifiez votre
.npmrc
ajouter une ligneca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
Problèmes
J'ai remarqué que parfois npm se bloque, alors j'arrête (parfois avec force) cntlm et le redémarre.