npm install gets stuck at fetchMetadata

This is how I resolved this after spending half an hour:

  1. npm config set registry http://registry.npmjs.org/ --global
  2. npm cache clear --force
  3. setting package-lock.json to {} only
  4. npm install --verbose

node: v12.14.1 npm: v6.13.4

This issue occure when I tried running ng update on angular 6 app to update it to angular 9.


As a first thing, run npm install --verbose to see more!

What happened in my case:

In your package.json search for packages you directly get from Github. In my case such a package did not exist anymore. Such lines look like

"NAME_OF_PACKAGE": "git+ssh://[email protected]/SOME_USER/NAME_OF_PACKAGE.git",

Remove the package, fix the name/location or change to the npm version of the package.


Further note: I got several other similar errors, all the same but the package name was different from longest@^1.0.1. I also had p-try@something or array-ify@something


For me all that didn't work: rm -rf ~/.npm, npm cache clean or rm package-lock.json all didn't work!


Adding to @CptUnlucky's answer.

npm config set registry "http://registry.npmjs.org"

This forces the http fetch. If this alone doesn't work, throttle the number of simultaneous connections that can be established. Default Max connections is 50.

npm set maxsockets 3

That worked for me.


The question is quite old but I've fallen into this scenario these days.

I tried every suggestion I read to solve the problem related to the npm installation process (npm cache clear and verify, uninstall and reinstall the package, uninstall and install everything and so on...) that looks like the "locked-in" syndrome. Nothing was successful in my case.

Once I found that my network was fully up and running without any firewall, proxy and/or strange routing rules I started installing packages with (example for the cli) npm install -g @angular/cli --verbose and I discovered that all the connections to the URL registry.npmjs.org were done in https. This was the problem in my case.

For an unknown reason npm fails in a not very clear condition during the connection with the remote server, without any network error or warning. Simply it takes an huge amount of time to retrieve the data. Permissions? SSL certificates or some specific checking on it? Some strange route on the net?

At the moment are just a speculations. I left the computer running all night and the packages were installed correctly but this is crazy. Isn't it?

After switching the connections to http with the command npm config set registry http://registry.npmjs.org/ --global everything has worked fine in a reasonable time for the installation packages process.

Probably there is something more that I'm missing but in my case the plain http has resolved the problem.

Ubuntu 18.04.1 LTS / node v8.12.0 / npm 6.4.1 / nvm 0.33.11


I have experienced this and fixed it with rm -rf ~/.npm or npm cache clean.

If that doesn't work, perhaps install with Homebrew instead of nvm, to eliminate some possibilities.