Comment installer NPM derrière le proxy d'authentification sur Windows?

30

J'ai besoin d'exécuter la dernière version de Node et NPM sous Windows. J'ai installé Node 0.5.8 et téléchargé les sources de NPM depuis GitHub. Les étapes que j'ai suivies pour installer NPM ont été répertoriées sur son site GitHub mais j'ai un problème lors de l'exécution de la commande suivante:

node cli.js install npm -gf

mais il échoue avec le message d'erreur suivant:

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

Je pense que c'est un problème car j'ai besoin d'une authentification sur mon proxy pour me connecter à Internet. Mais je n'ai trouvé aucun moyen de dire au programme d'installation d'utiliser mes informations d'identification pour la connexion. Existe-t-il une possibilité de fournir mon IP proxy et mes informations de connexion à l'installation de npm, peut-être via des arguments de ligne de commande?

Je peux fournir le journal complet (mais ne semble pas avoir plus d'informations pertinentes) en utilisant pastebin si nécessaire.

Tobias
la source
6
Une petite astuce, si le nom d'utilisateur contient la notation domaine \ utilisateur remplacez la barre oblique inverse par le code d'échappement http (% 5C)
@layos Merci beaucoup. Si c'était reddit, je te donnerais de l'or.
Korinna

Réponses:

39

set http_proxya très bien fonctionné pour moi, mais je devais le saisir à chaque fois que j'ouvrais l'invite de commande. J'ai donc dû combiner plusieurs réponses et maintenant la mienne est permanente.

Ma séquence s'est déroulée comme suit:

  • Aller à C:\Users\YourUserName
  • Créez un fichier nommé .npmrc
  • Dans ce fichier, tapez ce qui suit (si vous êtes sur un domaine AD):

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

  • Ou utilisez ceci si vous n'êtes PAS sur un domaine AD:

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

  • Enregistrez le fichier
  • Ouvrez une invite de commande et essayez d'utiliser npm

D'autres ont eu un succès supplémentaire avec la commande supplémentaire suivante:

strict-ssl = false

* Vous devriez pouvoir utiliser une adresse IP ou l'URL du proxy à la place de "IP" ci-dessus.

Votre chaîne proxy doit peut-être être légèrement modifiée, mais cela a fait en sorte que je n'ai pas eu à l'ajouter à chaque fois.

À votre santé

Eric Steinborn
la source
3
Attention, si votre mot de passe contient "@", npm n'analysera pas correctement votre paramètre proxy. Une solution de contournement possible consiste à mettre un faux nom d'utilisateur: mot de passe dans la configuration npm et à utiliser un proxy local (comme un violoneux) pour modifier l'en-tête Proxy-Authorization de la demande afin d'avoir le bon nom d'utilisateur: mot de passe. Gardez à l'esprit que le nom d'utilisateur: le mot de passe stocké dans Proxy-Authorization est codé en base64.
BStruthers
9
J'ai le mien avec qui travailler:proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false
Luke
1
n'a pas fait fonctionner le mien avec le nom d'utilisateur: mot de passe
philx_x
1
Hé, j'ai essayé d'utiliser domain\\user:password@urltoproxy:portcependant, lorsque j'exécute npm installles changements d'option sur domain/user:password@urltoproxy:portAlors, comment puis-je contourner cela?
Jacob Schneider
J'ai le même problème que @JacobSchneider, sur mon .npmrc: -ssl=false registry=http://registry.npmjs.org/ proxy=http://domain\\username:password#@proxy.url:8080 puis quand je reçois le réglage de la configuration avec npm config get proxy: http://domain/username:password#@proxy.url:8080 notez que la barre oblique inversée '\\' change en barre oblique '/'
pompalini
10

Peut-être que la définition d'une variable d'environnement fonctionnera pour vous:

set HTTP_PROXY=http://user:[email protected]:port

(Dans mon cas, cela résout la "connexion inconnue", mais j'obtiens une erreur de "socket raccrocher" complètement différente. J'ai également essayé de définir la variable d'environnement HTTPS_PROXY, mais j'ai obtenu le même résultat.)

nafisto
la source
J'ai essayé de définir la variable d'environnement et j'ai également essayé de transmettre --proxy user: [email protected]: port à la commande, mais maintenant je reçois toujours ECONNREFUSED .. Dois-je spécifier mon domaine AD pour la connexion proxy?
Tobias
@Tobias tryset HTTP_PROXY=http://domain\user:[email protected]:port
Adam Grant
8

J'ai eu ce problème identique et voici ce que j'ai fait pour que cela fonctionne:

  • Aller à: C:\Users\YourUserName
  • Créez un fichier nommé .npmrc
  • Et son entrée se lira:

    registry = http://registry.npmjs.org
    
  • Essayez à node cli.js install npm -gfnouveau la commande .

sam
la source
J'ai créé le fichier avec le contenu que vous avez mentionné mais j'obtiens toujours l'erreur de connexion inconnue :(
Tobias
Bravo pour cela. A fait une "config de npm a placé le registre Registry.npmjs.org " pour contourner le https: // et tout va bien sur ma configuration de Windows.
Gavin Gilmour
1
si quelqu'un reçoit le message ETIMEOUT, ajoutez le paramètre proxy avecnode config set proxy http://username:password@server:port
Jeremy S.
Ce qui a fonctionné pour moi a été de créer le ~/.npmrcfichier comme ci-dessus, qui indique à npm d'utiliser le http://registre à la place https://, puis de définir ma http_proxyvariable d'environnement surhttp://myusername:[email protected]:1234
Maxy-B
Attention, si votre mot de passe contient "@", npm n'analysera pas correctement votre paramètre proxy. Une solution de contournement possible consiste à mettre un faux nom d'utilisateur: mot de passe dans la configuration npm et à utiliser un proxy local (comme un violoneux) pour modifier l'en-tête Proxy-Authorization de la demande afin d'avoir le bon nom d'utilisateur: mot de passe. Gardez à l'esprit que le nom d'utilisateur: le mot de passe stocké dans Proxy-Authorization est codé en base64.
BStruthers
4

Après quelques recherches, je pourrais l'utiliser de cette façon:

  1. Installez NTLM Authorization Proxy Server ou un autre serveur proxy pour NTLM, comme Cntlm. Personnellement, je préfère le serveur python, car je peux le bricoler et les performances ne sont pas un problème.

  2. Installez la configuration; notez que dans mon cas, je devais activer le mode LM et NT, et je soupçonne que c'est le cas normal, de nos jours.

  3. Définissez la variable d'environnement http_proxy et https_proxy pour pointer vers votre proxy local:

    définir http_proxy = "localhost: 5865"
    définir https_proxy = "localhost: 5865"

  4. npm devrait fonctionner maintenant, bien sûr, il devrait être exécuté à partir d'un shell où les variables d'environnement ci-dessus sont définies.

Rob
la source
3

Ce qui suit a fonctionné pour moi.

Sous Windows 7:

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

Cela devrait créer un fichier nommé .npmrcdans le C:/users/<username>dossier.

Chummar
la source
3

Tapez ceci en ligne de commande:

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

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

N'OUBLIEZ PAS D'INCLURE HTTP: // avant votre nom d'utilisateur. Ça a marché pour moi.

Super Luvdub
la source
2

Ce problème a été résolu pour moi après avoir créé le fichier .npmrc comme ci-dessus, puis exécuté la commande adduser et les invites cmd suivantes.

npm adduser

Exécutez la comman suivante pour voir si vous avez un nom d'utilisateur autorisé:

npm whoami
John
la source
2

Chacune des réponses ci-dessus nécessite que l'utilisateur écrive son mot de passe dans un fichier texte ou dans une variable d'environnement.

Personnellement, je n'ai pas aimé une solution comme celles-ci, pour leur approche peu sûre. J'ai donc essayé d'écrire une application qui injecte le token Kerberos de l'utilisateur actuel dans les échanges entre le client (npm, bower, git) et le proxy. Cela dit, Active Directory n'est qu'une implémentation propriétaire de Kerberos.

J'utilise ce logiciel tous les jours, sur un hôte Windows 8.1. Vous pouvez trouver le code (golang) et les premières versions binaires sur https://github.com/nilleb/authentication-proxy .

nilleb
la source
1

Les trois choses ont fonctionné pour moi dans .npmrc

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

Au moins sous Windows, cela fonctionne pour moi avec le paramètre suivant:

proxy = http: // domaine % 5C nom d'utilisateur : mot de passe @ proxy_ip : port

c'est-à-dire (1) utiliser %5Cau lieu de \(comme suggéré ailleurs) et (2) utiliser l'adresse IP au lieu du nom de la machine locale pour le serveur proxy.

Ganesh
la source
C'est correct - le nom de domaine + nom d'utilisateur et le mot de passe doivent être encodés URL séparément. Par exemple, si vous avez # dans votre mot de passe, remplacez-le par% 23
saille
1

Vous obtiendrez l'hôte proxy et le port auprès de votre administrateur de serveur ou du support.

Après cette configuration

npm config set http_proxy http://username:[email protected]:itsport
npm config set proxy http://username:[email protected]:itsport

S'il y a un caractère spécial dans le mot de passe, essayez avec% urlencode. Par exemple: - la livre (hachage) doit être remplacée par% 23.

Shamseer
la source
2
À quelles versions votre réponse s'applique-t-elle étant donné que la question a été posée il y a plus de 3 ans?
Jason Aller
Je crois que cela n'a pas d'importance. J'ai trouvé la solution à ce problème après avoir beaucoup essayé et je n'ai jamais su que mon mot de passe posait problème.Pour qu'il soit parfait, aucune question n'a été posée même avant dix ans
:)
0

La solution qui a fonctionné pour moi est la suivante:

npm config set http_proxy http: // nom d'utilisateur : mot de passe @ hôte / IP : port

npm config set proxy http: // nom d'utilisateur : mot de passe @ hôte / IP : port

remplacer les paramètres par les valeurs, dans mon cas

nom d'utilisateur : (vide)

mot de passe : (vide)

hôte / IP : 192.36.36.110

port : 8080

donc mes commandes sont

ensemble de configuration npm http_proxy http: //: @ 192.36.36.110: 8080

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

srujan maddula
la source
0

CNTLM n'a pas fonctionné pour moi. J'ai essayé toutes les combinaisons possibles. NPM donnait une erreur d'authentification. Fiddler est venu pour sauver et a sauvé mon temps. Il est facile à installer et à configurer. Définissez la règle du violon sur Authentifié automatiquement. Dans .npmrc, définissez-les

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

Ça a marché pour moi :)

user588459
la source
0

Ce qui a fonctionné pour moi était le suivant:

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

Je n'ai pas eu à saisir de nom d'utilisateur ou de mot de passe, simplement l'URL du fichier PAC.

Kunal Nanda
la source