112

For me is npm install extremely slow. I'm using Windows 8.1 with the latest npm version. My connection speed is around 100Mbit/s.

The project I'm trying to install has around 20 packages/dependencies and it takes around 30 Minutes to install all dependencies ...

Does anyone have a clue?

weir
  • 4,521
  • 2
  • 29
  • 42
Simon Knittel
  • 1,730
  • 3
  • 15
  • 24

17 Answers17

44

I ran into the same problem, using --verbose as peterh mentioned showed me the source of the problem: I am behind a proxy, which uses its own certificates for https-connections. According to user "Mletter1" on https://github.com/npm/npm/issues/8872 the issue is quite easily solved by using http:

npm config set registry http://registry.npmjs.org/ --global

And voilà, it's fast again. Of course you should only do this, if you're ok with cleartext npm infos over the net ;-)

Christof Kälin
  • 1,384
  • 2
  • 17
  • 26
  • Just ran into this when using Windows WSL against a VirtualBox Docker (Toolbox). NPM slow as mud, redirecting my WSL (debian) to http npmjs.org sped things up significantly. – deepelement Feb 01 '19 at 01:29
  • To add another helpful link, looks like WSL NPM usage is also impacted by Windows Defender. https://gist.github.com/noelbundick/9c804a710eb76e1d6a234b14abf42a52 – deepelement Feb 01 '19 at 01:34
  • 8
    But isn't that unsafe? Exposes you the MIM attacks – GiriB Oct 15 '19 at 07:27
  • Great answer! However, now it is required to use https: `npm config set registry https://registry.npmjs.org/ --global` – Otávio Monteagudo Sep 24 '21 at 03:48
40

Warning regarding security: this is an insecure approach if you don't use any other means of antivirus protection.

From eternity → to 5 seconds builds:

  • search for Windows Defender settings
  • → Virus & threat protection
  • → Virus & threat protection Settings
  • → Exclusions

here add this two paths to your list of excluded realtime protection folders:

C:\Program Files\nodejs
C:\Users\<your username>\AppData\Roaming\npm

PS: replace the <your username> with your respective User folder name; or use alias to the AppData folder like: %AppData%\npm
If you're wondering why you can't find the AppData folder in Explorer, make sure to check "View" options for "Show hidden folders".

Roko C. Buljan
  • 196,159
  • 39
  • 305
  • 313
13

I know its just a workaround, but try using the build-in "Windows PowerShell"

MartinDoes
  • 129
  • 1
  • 2
11

I've been facing the same issue for a while. I was trying out the following

npm i typescript live-server --save-dev

The install would get stuck at it forever. However adding the -verbose flag worked just fine.

peterh
  • 11,875
  • 18
  • 85
  • 108
Nikhil Dev
  • 128
  • 1
  • 5
5

It seems like npm do not deal well with internet connections and can sometimes end in such situation.

1) I'll advice you to check if your firewall or antivirus is not performing any scan or filtering which may slow down npm install.

2) You may also use caching from npm like below.

npm install package-name --cache "c:\path\to\use\as\dependencies\cache"

this will allow npm download and cache dependencies in the directory you specified.

3) another solution for caching npm packages dependencies is npm lazy, you may find more information about this at npm Lazy website

Note: the caching process may or may not improve the download speed but it will probably save downloads time when installing or updating your npm packages.

Williem
  • 1,131
  • 1
  • 12
  • 19
4

For me it appeared to be a problem with IPv6.

Disabling IPv6 helped immensely for me.
With IPv6 turned on "update-package newtonsoft.json" took 1:45 to time out with the error "update-package : A task was canceled."

With IPv6 disabled "update-package newtonsoft.json" completed in 10 seconds

3

Turning off Windows Firewall and Windows Defender Real-time protection did it for me in Windows 10.

Mike
  • 39
  • 1
  • 1
    this would disable basic protection of the whole computer. [Roko's answer](https://stackoverflow.com/a/51827314/588868) reduce the exposure to only node folders. – Steve B Jul 29 '21 at 14:51
3

Fully turning off virus and firewall protection isn't the safest option. While it makes things faster, it leaves you more vulnerable.

In my case, I only excluded the node.exe process in virus & threat protection.

  • In your start menu, type "windows security" and open the app.
  • Click on "Virus & threat protection"
  • Virus & threat protection settings => Manage settings
  • Exclusions => Add or remove exclusions
  • Add an exclusion => process => type node.exe => click Add

just a simple create-react-app went down from 2m40s to 1m10s npm commands are also executed by node.exe, so the same improvements are noticed there.

birgert
  • 31
  • 1
2

I faced the same issue while creating project while using angular cli "ng new PROJECT_NAME" this command triggers "npm -install" after creation of project, which took too long to install, and got stuck at "Installing packages for tooling via npm" . Follow these which worked for me

1) Check your npm version "npm --version" (must be higher than 2.1.8)Update your npm package by "npm -g install --save latest-version"

2) Remove the progress bar which consumes more time "npm set progress=false"

check this issues if still doesn't fix your problem https://github.com/nodejs/node/issues/4150 https://github.com/npm/npm/issues/11283

Hopefully this sorts the problem Cheers!

2

In my case it was due to over 200 vulnerabilities. When I ran

npm audit fix

that solved only just a few of them. Eventually, I had to run

npm audit fix --force

and it got way better than before.

Tiago Martins Peres
  • 14,289
  • 18
  • 86
  • 145
1

I tried all the config's (proxy, registry, etc) nothing worked for me, so did a complete uninstall and install node & npm. Which helped to solve the issue.

Prasanth Jaya
  • 4,407
  • 2
  • 23
  • 33
1

Turning off the Windows Defender Firewall helped for me.

Because it just doesnt feel right I first added the WIFI to a Private Network (via WIFI settings) and only turned off the Windows Defender for a Private Network instead of all public Networks.

The next step should be: what network traffic causes this and how to add this to the Windows Defender exception rule :)

10Champ
  • 33
  • 1
  • 7
1

in addition to all other great comments, I'd also suggest switching to yarn (https://marketplace.visualstudio.com/items?itemName=geeklearningio.gl-vsts-tasks-yarn). using devops (selfhosted agent v.2.192.0), with node (v.14.17.6), we were able to trim total build (install + build) from ~10min to ~6-7 min.

yob
  • 528
  • 4
  • 9
0

Make sure you really are using a recent version of npm. In my case C:\Program Files\nodejs\npm.cmd had been using an old npm-cli.js below the default prefix folder %appdata%\npm rather than a newer npm-cli.js below C:\Program Files\nodejs.

Setting the environment variable npm_config_prefix to C:\Program Files\nodejs solved that. (Before finding that solution, I tried using the --prefix argument and found out the hard way doing so "forces non-global commands to run in the specified folder".)

I found a huge performance increase going from 3.10.9 to 6.13.4-- enough to make npm install times acceptable despite interference from antivirus.

weir
  • 4,521
  • 2
  • 29
  • 42
0

I just went through a rabbit hole trying to identify the issue. If npm install keeps getting bottlenecked you should heavily consider modifying the properties of your virtual ethernet and disable all of the offload items.

I had 0 proxies or caching issues with npm.

See here for the tutorial on how to get to the menu and disable your offload settings. Make sure you do this for both your your ethernet and VEthernet and you should immediately notice a difference. I went from a 10 minute hanging resolution that sometimes just stopped down to 10 seconds installs. https://www.dincloud.com/blog/tuning-windows-get-15x-speeds-on-large-file-copies-today

fengelhardt
  • 965
  • 11
  • 24
0

This is highly situational but we have a local registry (npm config get registry) that was not available (VPN:d) in when I was running the npm install ... and this obviously made it very slow but it still succeeded because everything was still available through cache.

Pasi Savolainen
  • 2,460
  • 1
  • 22
  • 35
0

Try upgrading to the latest Node.js version. I was originally using the most recent LTS (18.x) and downloading packages was painfully slow. I then tried installing the latest 20.x and it instantly solved my download issues.

You may also try adding the --verbose flag (e.g. npm install --verbose) to have an idea on where the process is getting stuck.

pm_labs
  • 1,135
  • 12
  • 22