Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question

migrated from stackoverflow.com Oct 17 '11 at 16:06

This question came from our site for professional and enthusiast programmers.

2  
A little trick, if the user name contains the domain\user notation substitute the backslash with the http escape code (%5C) –  user206475 Mar 12 '13 at 15:51
    
@layos Thank you sooooo much. If this was reddit, I'd give you gold. –  Korinna May 17 '13 at 5:34

8 Answers 8

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

share|improve this answer
1  
Heads up, if your password contains "@" npm won't parse your proxy setting correctly. A potential workaround is to put a bogus username:password in the npm config, and use a local proxy (like fiddler) to modify the request's Proxy-Authorization header to have the correct username:password. Keep in mind the the username:password stored in Proxy-Authorization is base64 encoded. –  BStruthers May 21 '13 at 13:26
4  
Got mine to work with: proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false –  Luke Dec 18 '13 at 19:51

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.)

share|improve this answer
    
I tried setting the environment variable and also tried passing --proxy user:pass@server.url:port to the command but now I alway get ECONNREFUSED.. Do I need to specify my AD domain for the proxy login? –  Tobias Oct 20 '11 at 7:14
    
Worked like a charm. Thanks! –  x97mdr Oct 30 '12 at 19:43
    
@Tobias try set HTTP_PROXY=http://domain\user:pass@server.url:port –  ajkochanowicz Jul 3 '13 at 20:40

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.

share|improve this answer
    
I created the file with the contents you mentioned but still getting the connect UNKNOWN error :( –  Tobias Nov 18 '11 at 7:09
    
Cheers for this. Did a "npm config set registry registry.npmjs.org"; to get around the https:// and all is well on my windows setup. –  Gavin Gilmour Mar 26 '12 at 7:34
1  
if somebody gets the ETIMEOUT message add proxy setting with node config set proxy http://username:password@server:port –  Jeremy S. May 8 '12 at 9:53
    
What worked for me was creating the ~/.npmrc file like above, which tells npm to use the http:// registry instead of https://, and then setting my http_proxy environment variable to http://myusername:mypassword@proxy.company.com:1234 –  Maxy-B Sep 7 '12 at 17:38
    
Heads up, if your password contains "@" npm won't parse your proxy setting correctly. A potential workaround is to put a bogus username:password in the npm config, and use a local proxy (like fiddler) to modify the request's Proxy-Authorization header to have the correct username:password. Keep in mind the the username:password stored in Proxy-Authorization is base64 encoded. –  BStruthers May 21 '13 at 13:26

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.

share|improve this answer

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
share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.