J'ai besoin de télécharger plusieurs paquets 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
Je viens d'avoir un problème très similaire, 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, une barre oblique apparaît. Donc en entrant dans ceci:
npm config set proxy "http://domain\username:password@servername:port/"
puis exécuter ce npm config get proxy
renvoie ceci: http: // domaine/nom d'utilisateur: mot de passe @ nom_serveur: port/
Par conséquent, pour résoudre le problème, j'ai à la place encodé la barre oblique inversée dans l'URL.
npm config set proxy "http://domain%5Cusername:password@servername:port/"
et avec cela, l'accès au proxy était corrigé.
Recherchez l'URL du fichier pac
dans les paramètres réseau d'Internet Explorer et téléchargez le fichier pac à partir de l'URL configurée . Le fichier pac est simplement un fichier javascript avec une fonction nommée FindProxyForURL
qui renvoie différents hôtes proxy dans différents scénarios.
Essayez de trouver un hôte dans le fichier pac que vous pensez être destiné au trafic Web général et branchez-le à .npmrc dans C:\Users\<username>\.npmrc
proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>
Même si vous pouvez vous connecter avec votre nom de domaine et votre nom d'utilisateur sur votre ordinateur d'entreprise, Il est fort possible que le nom de domaine de l'utilisateur Active Directory ne soit pas requis pour le proxy , seuls le nom d'utilisateur et le mot de passe (qui peuvent être différents de votre compte actif Répertoire de connexion)
N'oubliez pas de manipuler les caractères spéciaux avec mot de passe.
Téléchargez votre fichier .pac
. Ouvrez-le dans n’importe quel éditeur et cherchez PROXY = "PROXY X.X.X.X:80;
. Vous pouvez avoir de nombreux mandataires, en copier un et exécuter les commandes de terminal suivantes:
npm config set proxy http://X.X.X.X:80
npm config set https-proxy http://X.X.X.X:80
Maintenant, vous devriez pouvoir installer n’importe quel paquet!
J'ai résolu ce problème de cette façon:
1) Je lance cette commande:
npm config set strict-ssl false
2) Ensuite, configurez npm pour s'exécuter avec http, au lieu de https
npm config set registry "http://registry.npmjs.org/"
3) Ensuite installez votre paquet
npm install <package name>
J'avais rencontré plusieurs problèmes avec ceci et finalement ce que j'ai fait est le suivant:
Dans les règles personnalisées de violoneux, j'ai ajouté
if (m_AutoAuth) {oSession["X-AutoAuth"] = "domain\\username:password";}
Enfin, dans npm, je règle le proxy sur http: // localhost: 8888
Cela a bien fonctionné.
Vous pouvez vérifier Fiddler si NPM génère une erreur d’authentification. Il est facile à installer et à configurer. Définissez la règle Fiddler sur Authentifié automatiquement. Dans .npmrc définissez ces propriétés
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
Cela a fonctionné pour moi :)
Pour les personnes aux prises avec un pare-feu d'entreprise, ainsi que pour les problèmes liés à SSL (impossible d'obtenir un certificat d'émetteur local), voici quelques étapes que vous pouvez essayer:
Si vous n'êtes pas préoccupé par SSL, vous pouvez suivre les conseils de nombreux contributeurs précédents en définissant vos serveurs proxy et en modifiant le registre en version non sécurisée:
npm config set proxy http://username:password@proxyname:port
npm config set https-proxy http://username:password@proxyname:port
npm config set registry http://registry.npmjs.org/
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 quitté 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.
Si vous voulez conserver SSL et ne pas 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. Je reçois donc l'erreur unable to get local issuer certificate
. Si vous êtes dans le même bateau que moi, vous devrez définir l'option cafile=
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 des 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 à signature automatique. 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 autorisant 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 au certificat sous forme de fichier P7B, ou les exporter individuellement sous forme de fichiers CER (codage base64). Exporter le chemin complet en tant que P7B ne vous sera pas très utile, car vous devrez à son tour ouvrir ce fichier dans un gestionnaire de certificats et l'exporter en tant que fichier CER individuel. Sous Windows, double-cliquez sur le fichier P7B pour ouvrir l’application Certificate Manager.
Exporter en tant que CER (Base 64) est en réalité un fichier texte au format suivant:
-----BEGIN CERTIFICATE-----
MIIGqzCCBZOgAwIBAgITIwAAABWhFPjwukYhTAADAAAAFTANBgkqhkiG9w0BAQUF
ADBFMRMwEQYKCZImiZPyLGQBGRYDY29tMRYwFAYKCZImiZPyLGQBGRYGaXJ2aW5n
b0pvCkNmjWzaNNUg2hYET+pP5nP75aRu+kPRl9UnlQ....rest of certificate...
-----END CERTIFICATE-----
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 collerais Websense en dessous, puis Émettre autorité de certification 1, etc. Ainsi, les certificats sont analysés de haut en bas à la recherche de l'autorité de certification racine appropriée. Inclure simplement l'autorité de certification racine ne fonctionnera pas, mais nous n'avons pas non plus besoin d'inclure tous les certificats. Dans le chemin ci-dessus, il me suffit d'inclure les certificats précédant le certificat Websense (autorité de certification émettrice 1, autorité de certification politique, autorité de certification racine).
Une fois que ces certificats auto-signés sont enregistrés dans un fichier PEM, nous sommes prêts à indiquer à npm d'utiliser ces certificats comme notre autorité de certification approuvée. Il suffit de définir le fichier de configuration et vous devriez être bon pour aller:
npm config set cafile "C:\yourcerts.pem"
Désormais, avec votre jeu de proxies (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 le paramètre strict-ssl
.
Essayez ceci, Définissez le proxy dans NPM comme suit
npm config set proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set https-proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
Utilisez la commande ci-dessous à cmd ou GIT Bash ou autre invite
$ npm config set proxy "http://192.168.1.101:4128"
$ npm config set https-proxy "http://192.168.1.101:4128"
où 192.168.1.101 est le proxy ip et 4128 le port. changer en fonction de vos paramètres de proxy.
Si vous êtes derrière un réseau d'entreprise avec proxy, je viens d'utiliser un outil proxy NTLM et le port et le proxy fournis par NTLM.
strict-ssl=false
proxy=http://localhost:3125
J'espère que ça aide.
Vous obtiendrez l'hôte et le port proxy auprès de votre administrateur de serveur ou de l'assistance.
Après cela mis en place
npm config set http_proxy http://username:[email protected]:itsport
npm config set proxy http://username:[email protected]:itsport
Si le mot de passe contient des caractères spéciaux, essayez avec% urlencode. Exemple: - la livre (hachage) doit être remplacée par% 23.
Cela a fonctionné pour moi ...
Vous devez utiliser "npm config set http-proxy "
utilisation:
npm config set http-proxy http://1.2.3.4:8181
npm config set https-proxy http://1.2.3.4:8181
Essayez ceci, c’est le seul qui a fonctionné pour moi:
npm --proxy http: //: @proxyhost: --https-proxy http: //: @proxyhost: --strict-ssl false installer le paquet
Faites attention à l'option --strict-ssl false
Bonne chance.
#Without password
proxy=http://ipaddress:80
https-proxy=http://ipaddress:80
#With password
proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>
#proxy=http://ipaddress:80
#https-proxy=http://ipaddress:80
#With password
#proxy=http://<username>:<pass>@proxyhost:<port>
#https-proxy=http://<uname>:<pass>@proxyhost:<port>
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 le problème this npm, certaines dépendances utilisent GIT et rendent la configuration du proxy git nécessaire, et peut être fait comme suit:
git config --global http.proxy http://username:password@Host:port
git config --global https.proxy http://username:password@Host:port
La configuration du proxy NPM mentionnée:
npm config set proxy "http://username:password@Host:port"
npm config set https-proxy "http://username:password@Host:port"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
Parce que j'ai toujours des problèmes pour définir les paramètres de proxy au travail et les désactiver à la maison, j'ai créé et publié un script 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 de fournir npm config (identique pour backback form domain\user).
Je ne pouvais pas le faire fonctionner avec le CNTLM. J'ai essayé de suivre toutes les informations postées ci-dessus, mais le proxy n'autorisait toujours pas la connexion. Avec Fiddler, il vous suffit de l'installer et de cocher l'option Authentifié automatiquement. Mais pour fonctionner, j'ai dû supprimer le fichier .npmrc de mon dossier utilisateur et définir les variables d'environnement comme indiqué ici , avec ces valeurs:
set npm_config_https-proxy="http://127.0.0.1:8888"
set npm_config_registry="http://registry.npmjs.org/"
J'ai rencontré un problème similaire et découvert que mon fichier de configuration npm (.npmrc) avait une mauvaise entrée de registre. a commenté et relancé l’installation de npm. ça a marché.
L'ajout des lignes ci-dessous dans le fichier .typingsrc m'a aidé.
{
"rejectUnauthorized": false,
"registryURL" :"http://api.typings.org/"
}
J'avais un problème similaire et j'ai essayé toutes les solutions ci-dessus, mais aucune d'entre elles ne fonctionnait 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, je craignais un peu d'ajouter mon mot de passe sous forme de texte brut… 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 this answer in SO.
À partir d’une petite recherche sur google, la première chose que j’ai essayée était la suivante:
npm config set registry http://registry.npmjs.org/
npm config set proxy "your proxy"
npm config set https-proxy "your proxy"
Mais npm semblait toujours perdre la connexion en essayant de faire "npm install". alors j'ai couru cette ligne dans l'invite de commande et maintenant je peux utiliser l'installation de npm
set NODE_TLS_REJECT_UNAUTHORIZED=0
OS: 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 proxynpm config rm proxy
npm config rm https-proxy
npm config set registry=http://registry.npmjs.org/
npm install
Au travail, nous utilisons ZScaler comme proxy. Le seul moyen de faire fonctionner NPM a été d’utiliser Cntlm .
Voir cette réponse: