J'ai besoin de télécharger plusieurs packages via npm mais notre configuration de proxy d'entreprise est un fichier .pac (je suis sous Windows)
J'ai déjà essayé
npm config set proxy http://mydomain\username:[email protected]:8181/proxy.pac
npm config set https-proxy http://mydomain\username:[email protected]:8181/proxy.pac
ou
npm config set proxy http://1.2.3.4:8181/proxy.pac
npm config set https-proxy http://1.2.3.4:8181/proxy.pac
mais ça ne marche pas ...
toute suggestion? Merci
proxy.pac
fichier afin d'en obtenir l'adresse proxy. (Dans mon cas, je devais simplement changer de port sur 8080).Réponses:
J'ai juste eu un problème très similaire, où je ne pouvais pas faire fonctionner npm derrière notre serveur proxy.
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:
puis exécuter ceci
npm config get proxy
renvoie ceci: http: // domaine / nom d'utilisateur: mot de passe @ nom du serveur: port /Par conséquent, pour résoudre le problème, j'ai plutôt encodé l'URL de la barre oblique inverse, alors j'ai entré ceci:
et avec cela, l'accès proxy a été fixé.
la source
strict-ssl=false
au.npmrc
fichier de configuration résolu pour moi derrière un proxy d'entreprise - voir les réponses de @ ovidiu-buligan et @ karthikeyan-aRecherchez l'url du
pac
fichier dans les paramètres LAN d'Internet Explorer et téléchargez le fichier pac à partir de l'URL configurée. Le fichier pac est juste un fichier javascript avec une fonction nomméeFindProxyForURL
qui renvoie différents hôtes proxy dans différents scénarios.Essayez de trouver un hôte dans ce fichier pac qui, selon vous, est destiné au trafic Web général et branchez-le à .npmrc dans
C:\Users\<username>\.npmrc
Même si vous pouvez vous connecter avec votre domaine et votre nom d'utilisateur sur votre ordinateur d' entreprise, il est fort possible que le nom de domaine de l'annuaire actif de l'utilisateur ne soit pas requis pour le proxy , uniquement le nom d'utilisateur et le mot de passe (qui peuvent être différents de votre connexion Active Directory)
N'oubliez pas de jouer avec les caractères de mot de passe spéciaux qui s'échappent.
la source
Téléchargez votre
.pac
fichier. Ouvrez-le dans n'importe quel éditeur et recherchezPROXY = "PROXY X.X.X.X:80;
. Vous pouvez avoir de nombreux proxys, copier l'un d'entre eux et exécuter les commandes de terminal suivantes:Vous devriez maintenant pouvoir installer n'importe quel package!
la source
git config --global http.proxy http://X.X.X.X:80
git config --global https.proxy http://X.X.X.X:80
J'ai résolu ce problème de cette façon:
1) J'exécute cette commande:
npm config set strict-ssl false
2) Ensuite, définissez npm pour qu'il s'exécute avec http, au lieu de https:
npm config set registry "http://registry.npmjs.org/"
3) Ensuite, installez votre package
npm install <package name>
la source
ca[]
propriété sur npm.Pour développer la réponse de @Steve Roberts.
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
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:
DOMAIN
chaîne est-elle requise pour l'authentificationCordialement.
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:
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:
É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
C:\Program Files\Cntlm\cntlm.ini
(vous aurez peut-être besoin de droits d'administrateur)Username
etDomain
lignes (ligne 8-9 je pense)À l'invite cmd, exécutez:
La sortie que vous obtenez
cntlm -H
ressemblera à quelque chose comme:#
ligne avantPassLM
etPassNT
ou de ne pas les utilisercntlm -H
du fichier ini en remplaçant les lignes pourPassLM
,PassNT
etPassNTMLv2
, ou commentez les lignes d'origine et ajoutez les vôtres.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 laAutoConfigURL
clé de registre dansHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
. Accédez à cette URL et parcourez le code qui se trouve être JavaScript.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 cntlm3128
afin que mon URL de proxy ressemble à ceciAvec la commande appropriée:
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
(gros non-non).npm config set strict-ssl false
Etapes de base
\n
.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.
la source
J'avais rencontré plusieurs problèmes avec cela et finalement ce que j'ai fait est le suivant:
Dans les règles personnalisées Fiddler, j'ai ajouté
Enfin, dans npm, j'ai défini le proxy sur http: // localhost: 8888
Cela a bien fonctionné.
la source
"domain\\username:password"
peut constituer une menace pour la sécurité du vol d'identité. Au lieu de cela, utiliser la"(default)"
configuration dans les règles personnalisées fonctionnait à merveille. Fiddler doit être en cours d'exécution pendant que vous utilisez "npm" pour que cela fonctionne.Pour toute personne ayant des difficultés derrière un pare-feu d'entreprise, ainsi que des problèmes avec SSL (impossible d'obtenir un certificat d'émetteur local), voici quelques étapes que vous pouvez essayer:
Oubliez SSL
Si vous n'êtes pas préoccupé par SSL, vous pouvez suivre les conseils de nombreux contributeurs précédents en définissant vos proxys et en modifiant le registre vers la version non sécurisée:
Un rapide "gotcha" ici, mes informations d'identification de proxy sont les mêmes pour les demandes sécurisées et non sécurisées (remarquez comment j'ai laissé mon protocole en tant que http: // pour la configuration https-proxy ). Cela peut être la même chose pour vous, et ce n'est peut-être pas le cas.
Je veux garder SSL
Si vous souhaitez conserver SSL et ne souhaitez pas l'utiliser
strict-ssl=false
, vous avez encore du travail à faire. Pour moi, je suis derrière un pare-feu d'entreprise et nous utilisons des certificats auto-signés, donc je reçois l'erreurunable to get local issuer certificate
. Si vous êtes dans le même bateau que moi, vous devrez définir l'cafile=
option dans le fichier de configuration npm. Tout d'abord, vous devez créer un fichier PEM contenant des informations sur vos certificats auto-signés. Si vous ne savez pas comment faire cela, voici les instructions pour un environnement Windows sans utiliser de logiciel tiers:Nous devons indiquer explicitement quels certificats doivent être approuvés car nous utilisons des certificats auto-signés. Pour mon exemple, j'ai accédé à www.google.com à l'aide de Chrome afin de pouvoir récupérer les certificats.
Dans Chrome, accédez à Inspecter -> Sécurité -> Afficher le certificat. Vous verrez tous les certificats qui permettent la connexion SSL. Remarquez comment ces certificats sont auto-signés. La partie floue est mon entreprise et nous ne sommes pas une autorité certifiée. Vous pouvez exporter le chemin d'accès complet du certificat sous forme de fichier P7B, ou vous pouvez exporter les certificats individuellement sous forme de fichiers CER (encodage base64). Exporter le chemin complet en tant que P7B ne vous fait pas beaucoup de bien car vous devrez à votre tour ouvrir ce fichier dans un gestionnaire de certificats et l'exporter en tant que fichiers CER individuels de toute façon. Sous Windows, double-cliquez sur le fichier P7B pour ouvrir l'application Certificate Manager.
L'exportation en tant que CER (Base 64) est en réalité un fichier texte au format suivant:
Pour créer notre fichier PEM, nous devons simplement empiler ces certificats les uns sur les autres dans un seul fichier et changer l'extension en .pem. J'ai utilisé le bloc-notes pour faire cela.
Vous empilez les certificats dans l'ordre inverse du chemin du certificat. Donc ci-dessus, je commencerais par * .google.com puis je collerais Websense en dessous, puis je délivrerais CA 1 etc. De cette façon, les certificats sont analysés de haut en bas à la recherche de l'autorité de certification racine appropriée. Le simple fait d'inclure l'Autorité de certification racine ne fonctionnera pas, mais nous n'avons pas non plus besoin d'inclure tous les certificats. À partir du chemin ci-dessus, je n'ai besoin d'inclure que les certificats qui précèdent le certificat Websense (émission CA 1, politique CA, racine CA).
Une fois que ces certificats auto-signés sont enregistrés dans un fichier PEM, nous sommes prêts à demander à npm d'utiliser ces certificats comme notre autorité de certification de confiance. Définissez simplement le fichier de configuration et vous devriez être prêt à partir:
Désormais, avec vos proxies définis (http et https) et le registre défini sur
https://registry.npmjs.org
, vous devriez pouvoir installer des packages derrière un pare-feu d'entreprise avec des certificats auto-signés sans modifier lestrict-ssl
paramètre.la source
Vous pouvez vérifier Fiddler si NPM donne une erreur d'authentification. Il est facile à installer et à configurer. Définissez Fiddler Rule sur Automatically Authenticated.Dans .npmrc, définissez ces propriétés
Cela a fonctionné pour moi :)
la source
Essayez ceci, définissez le proxy dans npm comme suit
la source
Vous obtiendrez l'hôte proxy et le port de votre administrateur de serveur ou de l'assistance.
Après cela mis en place
S'il y a un caractère spécial dans le mot de passe, essayez avec% urlencode. Par exemple: - la livre (hash) doit être remplacée par% 23.
Cela a fonctionné pour moi ...
la source
Créez simplement un fichier nommé .npmrc dans un dossier de votre projet, cela évitera la configuration du proxy au niveau du système
Commentez comme ceci si vous n'utilisez pas le proxy
la source
Aucune des réponses existantes n'explique comment utiliser npm avec un fichier PAC. Certains suggèrent de télécharger le fichier PAC, de l'inspecter manuellement et de choisir l'une des chaînes "PROXY ...". Mais cela ne fonctionne pas si le fichier PAC doit choisir parmi plusieurs proxys, ou si le fichier PAC contient une logique complexe pour contourner les proxies pour certaines URL.
En outre, certains proxys d'entreprise nécessitent une authentification NTLM. CNTLM peut gérer l'authentification, mais ne prend pas en charge les fichiers PAC.
Une alternative consiste à utiliser Alpaca , qui exécute le fichier PAC dans une machine virtuelle JavaScript et effectue une authentification NTLM avec le proxy résultant.
la source
Si vous êtes derrière un réseau d'entreprise avec proxy, je viens d'utiliser un outil de proxy ntlm et j'ai utilisé le port et le proxy fournis par ntlm, par exemple, j'ai utilisé cette configuration:
J'espère que ça aide.
la source
Utilisez la commande ci-dessous à cmd ou GIT Bash ou à une autre invite
où 192.168.1.101 est l'IP proxy et 4128 est le port. changer en fonction de vos paramètres de proxy.
la source
Vous devez utiliser "npm config set http-proxy "
utilisation:
la source
Au travail, nous utilisons ZScaler comme proxy. La seule façon dont j'ai pu faire fonctionner npm était d'utiliser Cntlm .
Voir cette réponse:
NPM derrière le proxy NTLM
la source
Essayez ceci, c'est le seul qui a fonctionné pour moi:
npm --proxy http: //: @proxyhost: --https-proxy http: //: @proxyhost: --strict-ssl false install -g package
Payer une attention à l'option --strict-ssl false
Bonne chance.
la source
La configuration du proxy NPM mentionnée dans la réponse acceptée résout le problème, mais comme vous pouvez le voir dans ce problème npm , certaines dépendances utilisent GIT et cela rend la configuration du proxy git nécessaire , et peut être effectuée comme suit:
La configuration du proxy NPM mentionnée:
la source
J'ai eu un problème similaire et j'ai essayé toutes les solutions de contournement ci-dessus, mais aucune d'entre elles n'a fonctionné pour moi (j'utilisais des caractères spéciaux (comme le symbole «@») dans mon mot de passe et j'avais également besoin d'ajouter un nom de domaine).
En dehors de cela, j'étais un peu inquiet d'ajouter mon mot de passe en texte brut. Il s'est avéré que la solution la plus simple pour surmonter tous ces défis était d'utiliser une sorte de proxy inverse (comme Fiddler).
J'ai déjà détaillé les étapes de configuration dans cette réponse dans SO.
la source
L'ajout des lignes ci-dessous dans le fichier .typingsrc m'a aidé.
la source
J'ai rencontré un problème similaire et j'ai découvert que mon fichier de configuration npm (.npmrc) avait une mauvaise entrée de registre. l'a commenté et a relancé l'installation de npm. ça a marché.
la source
Système d'exploitation: Windows 7
Étapes qui ont fonctionné pour moi:
npm config get proxy
npm config get https-proxy
Commentaires: j'ai exécuté cette commande pour connaître mes paramètres de proxy
npm config rm proxy
npm config rm https-proxy
npm config set registry=http://registry.npmjs.org/
npm install
la source
Parce que j'ai encore des problèmes avec la configuration des paramètres de proxy au travail et les désactiver à la maison, j'ai écrit et publié npm-corpo-proxy.sh . Dans chaque corpo, le mot de passe doit être changé souvent et doit contenir des caractères spéciaux, qui doivent être encodés avant d'alimenter npm config (la même chose pour le formulaire de retour domaine \ utilisateur).
la source
À partir d'une petite recherche sur Google, la première chose que j'ai essayée était la suivante
Mais npm semblait toujours perdre la connexion en essayant de faire des "installations npm". puis j'ai exécuté cette ligne dans l'invite de commande et maintenant je peux utiliser npm install
la source
Je n'ai pas pu le faire fonctionner avec le CNTLM. J'ai essayé de suivre toutes les informations publiées ci-dessus, mais le proxy n'a toujours pas autorisé la connexion. Avec Fiddler, il vous suffit de l'installer et de cocher l'option Authentifié automatiquement. Mais pour travailler, j'ai dû supprimer le fichier .npmrc de mon dossier utilisateur et définir les variables d'environnement comme indiqué ici , avec ces valeurs:
la source