32

I need to run the latest version of Node and NPM on Windows. I installed Node 0.5.8 and downloaded the sources of NPM from GitHub. The steps I followed to install NPM were listed on its GitHub site but I have a problem running the following command:

node cli.js install npm -gf

but it fails with the following error message:

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

I think that this is a problem because I need authentication at my proxy to connect to the Internet. But I found no way to tell the installer to use my credentials for login. Is there a possibility to provide my proxy IP and login information to npm installation maybe via command-line arguments?

I can provide the full log (but seems to have no more relevant information) using pastebin if needed.

sblair
  • 12,757
Tobias
  • 431

14 Answers14

41

set http_proxy worked really well for me but I had to enter it in every time I opened the command prompt. So I had to combine multiple answers and now mine is permanent.

My sequence went as follows:

  • Go to C:\Users\YourUserName
  • Create a file named .npmrc
  • Inside that file type the following (if you are on an AD domain):

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

  • Or use this is you are NOT on an AD domain:

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

  • Save the File
  • Open a command prompt and try to use npm

Others have had extra success with the following extra command:

strict-ssl = false

*You should be able to use an IP address or the URL to the proxy in place of "IP" above.

Your proxy string may need to be tweaked a bit, but this made it so that I didn't have to add this every single time.

Cheers

11

Maybe setting an environment variable will work for you:

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

(In my case, this solves the "connect UNKNOWN", but I get a completely different "socket hang up" error. I also tried setting the HTTPS_PROXY environment variable, but got the same result.)

nafisto
  • 211
  • 1
  • 3
9

I had this identical issue and here's what I did to make this work:

  • Go to: C:\Users\YourUserName
  • Create a file named .npmrc
  • And it's entry will read:

    registry = http://registry.npmjs.org
    
  • Try the command node cli.js install npm -gf again.

sblair
  • 12,757
sam
  • 191
5

After some research, I could use it in this way:

  1. Install NTLM Authorization Proxy Server or another proxy server for NTLM, like Cntlm. Personally, I prefer the python server, because I can tinker with it, and performance is not a problem.

  2. Set up the configuration; note that in my case, I had to enable both LM and NT mode, and I would suspect it being the normal case, nowadays.

  3. Set http_proxy and https_proxy environment variable to point to your local proxy:

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

  4. npm should work now, of course it should be executed from a shell where the above environment variables are defined.

rob
  • 207
4

The following worked for me.

On Windows 7:

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

This should create a file named .npmrc in the C:/users/<username> folder.

Seth
  • 403
Chummar
  • 41
  • 1
3

Each one of the above answers needs the user to write her password in a text file, or in an environ ment variable.

Personally I didn't like a solution like these, for their insecure approach. So I tried to write an application which injects the Kerberos token of the current user in the exchanges between the client (npm, bower, git) and the proxy. That said, Active Directory is just a proprietary implementation of Kerberos.

I use this software everyday, on a Windows 8.1 host. You can find the code (golang) and the first release binaries on https://github.com/nilleb/authentication-proxy.

nilleb
  • 131
  • 1
3

Type this in command line:

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

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

DONT FORGET TO INCLUDE HTTP:// before your username. It worked for me.

2

This issue resolved for me after creating the .npmrc file as above, and then running the adduser command and following cmd prompts.

npm adduser

Run the following comman to see if you have an authorised username:

npm whoami
John
  • 21
2

At least in Windows, it works for me with the following setting:

proxy=http://domain%5Cusername:password@proxy_ip:port

i.e., (1) use %5C instead of \ (as suggested elsewhere) and (2) use the IP address instead of the local machine name for the proxy server.

Ganesh
  • 21
1

All three things worked for me in .npmrc

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

You will get the proxy host and port from your server administrator or support.

After that set up

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

If there any special character in password try with % urlencode. Eg:- pound(hash) shuold be replaced by %23.

Shamseer
  • 111
0

The solution worked for me is the following:

npm config set http_proxy http://username:password@host/IP:port

npm config set proxy http://username:password@host/IP:port

replace the parameters with the values, in my case

username: (empty)

password: (empty)

host/IP : 192.36.36.110

port : 8080

so My commands are

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

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

0

CNTLM didn't work for me. I tried all possible combinations. NPM was giving Authentication error. Fiddler came for rescue and saved my time. It is easy to install and configure. Set Fiddler Rule to Automatically Authenticated.In .npmrc set these

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

It worked for me :)

0

What worked for me was as follows:

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

I did not have to enter any usernames or passwords, simply the PAC file url.