`` npm install '' działa bardzo wolno w systemie Windows

84

U mnie jest npm installniezwykle powolny. Używam systemu Windows 8.1 z najnowszą wersją npm. Szybkość mojego połączenia wynosi około 100 Mb / s.

Projekt, który próbuję zainstalować, ma około 20 pakietów / zależności, a zainstalowanie wszystkich zależności zajmuje około 30 minut ...

Czy ktoś ma wskazówkę?

Simon Knittel
źródło
2
Dzisiaj też mam ten problem. Rozsądnie świeżo zbudowany box z Windows 8.1, zainstalowałem dziś node.js i npm. npm install działa bardzo wolno podczas próby zainstalowania bower. npm v2.7.4 nodejs v0.12.2
Stuntbeaver
@Simon Knittel Czy rozwiązałeś to?
Tomasz Waszczyk
@PantaRhei Nie wiem, czy to jest rozwiązanie, ale miało dla mnie znaczenie, czy instaluję moduły na dysku USB3, czy na wewnętrznym dysku twardym.
Simon Knittel
@simon może to być twój firewall blokujący połączenie, w przeciwnym razie zaktualizujesz Nodejs i npm
Seif Tamallah
@Pnta możesz spróbować zaktualizować Nodejs i npm oraz wyłączyć zaporę ogniową
Seif Tamallah

Odpowiedzi:

34

--verboseNatknąłem się na ten sam problem, używając, jak wspomniał peterh, pokazało mi źródło problemu: jestem za proxy, które używa własnych certyfikatów dla połączeń https. Według użytkownika „Mletter1” na https://github.com/npm/npm/issues/8872 problem można dość łatwo rozwiązać za pomocą http:

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

I voilà, znowu jest szybki. Oczywiście powinieneś to zrobić tylko wtedy, gdy nie masz nic przeciwko informacjom npm w postaci zwykłego tekstu przez sieć ;-)

Christof Kälin
źródło
Po prostu napotkałem to podczas używania Windows WSL przeciwko VirtualBox Docker (Toolbox). NPM powolny jak błoto, przekierowanie mojego WSL (debiana) na http npmjs.org znacznie przyspieszyło działanie.
deepelement
Aby dodać kolejne pomocne łącze, wygląda na to, że na użycie WSL NPM ma również wpływ program Windows Defender. gist.github.com/noelbundick/9c804a710eb76e1d6a234b14abf42a52
deepelement
4
Ale czy to nie jest niebezpieczne?
Ujawnia
19

Zrzeczenie się. Obawy dotyczące bezpieczeństwa: mam nadzieję, że wiesz, co pobierasz do folderu node_modules, prawda;)

Kompilacje Od wieczności → do 5 sekund :

  • wyszukaj ustawienia programu Windows Defender
  • → Ochrona przed wirusami i zagrożeniami
  • → Ustawienia ochrony przed wirusami i zagrożeniami
  • → Wyłączenia

tutaj dodaj te dwie ścieżki do listy wykluczonych folderów ochrony w czasie rzeczywistym :

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

PS : zastąp <your username>odpowiednią nazwą folderu użytkownika .
Jeśli zastanawiasz się, dlaczego nie możesz znaleźć folderu AppData w Eksploratorze, sprawdź opcje Wyświetl dla ukrytych folderów.

Roko C. Buljan
źródło
1
U mnie działa świetnie, należy również dodać w folderze obszaru roboczego, w którym masz lokalne foldery node_modules dla projektów.
Xun Yang
@Chet daj mi znać, kiedy zrobisz to działa , co zrobiłeś
Roko C. Buljan
Wszedłem do obrońcy i wyłączyłem całą ochronę przed wirusami i zagrożeniami, całą ochronę sieci i zaporę, wyłączyłem „sprawdzaj aplikacje i pliki”. Dodałem również niektóre ustawienia npm, aby wyłączyć postęp i ustawiłem adres URL rejestru na http zamiast https. Teraz jest trochę szybciej.
Chet
4
@Chet yap, infekcje wirusami powinny teraz przebiegać szybciej 🙈
Roko C. Buljan
1
To jest plan! 🤞
Chet,
11

Od jakiegoś czasu mam ten sam problem. Wypróbowałem następujące

npm i typescript live-server --save-dev

Instalacja utknęłaby w tym na zawsze. Jednak dodanie flagi -verbose działało dobrze.

Nikhil Dev
źródło
2
Ale dlaczego -verbosema to znaczenie?
Itamar Bitton,
10

Wiem, że to tylko obejście , ale spróbuj użyć wbudowanego „ Windows PowerShell

MartinDoes
źródło
1
Działa dobrze! Dzięki.
FRNathan13
8
@MartinDoes Dlaczego PowerShell jest szybszy?
Witold Kaczurba
1
Ta sama dokładna wydajność między cmd.exei PowerShell dla mnie.
Tom Granot
4

Wygląda na to, że npm nie radzi sobie dobrze z połączeniami internetowymi i czasami może skończyć się taką sytuacją.

1) Radzę ci sprawdzić, czy twoja zapora sieciowa lub program antywirusowy nie wykonuje żadnego skanowania lub filtrowania, co może spowolnić instalację npm.

2) Możesz także użyć buforowania z npm jak poniżej.

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

pozwoli to na zależności pobierania npm i pamięci podręcznej w określonym katalogu.

3) innym rozwiązaniem do buforowania zależności pakietów npm jest npm leniwy , możesz znaleźć więcej informacji na ten temat pod adresem stronie npm Lazy

Uwaga: proces buforowania może, ale nie musi, poprawić prędkość pobierania, ale prawdopodobnie zaoszczędzi czas pobierania podczas instalowania lub aktualizowania pakietów npm.

Williem
źródło
3

Wyłączenie Zapory systemu Windows i programu Windows Defender Ochrona w czasie rzeczywistym zrobiło to za mnie w systemie Windows 10.

Mikrofon
źródło
2

Wydaje mi się, że to problem z IPv6.

Wyłączenie IPv6 bardzo mi pomogło.
Po włączeniu protokołu IPv6 „pakiet aktualizacji newtonsoft.json” upłynął czas 1:45 i pojawił się błąd „pakiet-aktualizacji: zadanie zostało anulowane”.

Przy wyłączonym IPv6 „pakiet aktualizacji newtonsoft.json” ukończono w 10 sekund

Benjamin Casha
źródło
Wyłączenie IPv6 pomogło mi w podobnym problemie w Fedorze 23
malloc4k
1

Napotkałem ten sam problem podczas tworzenia projektu podczas korzystania z kątowego kliknięcia „ng new PROJECT_NAME”, to polecenie uruchamia polecenie „npm -install” po utworzeniu projektu, którego instalacja trwała zbyt długo, i utknęło na etapie „Instalowanie pakietów do narzędzi przez npm”. Postępuj zgodnie z tymi, które zadziałały dla mnie

1) Sprawdź swoją wersję npm „npm --version” (musi być nowsza niż 2.1.8) Zaktualizuj swój pakiet npm przez „npm -g install --save latest-version”

2) Usuń pasek postępu, który pochłania więcej czasu „npm set progress = false”

sprawdź te problemy, jeśli nadal nie rozwiążesz problemu https://github.com/nodejs/node/issues/4150 https://github.com/npm/npm/issues/11283

Mamy nadzieję, że to rozwiązuje problem. Na zdrowie!

Pionier
źródło
1

Pomogło mi wyłączenie zapory systemu Windows Defender.

Ponieważ po prostu nie czuję się dobrze, najpierw dodałem WIFI do sieci prywatnej (przez ustawienia WIFI) i wyłączyłem program Windows Defender tylko dla sieci prywatnej zamiast wszystkich sieci publicznych.

Następnym krokiem powinno być: jaki ruch sieciowy to powoduje i jak dodać to do reguły wyjątku programu Windows Defender :)

10Champ
źródło
0

Wypróbowałem wszystkie konfiguracje (proxy, rejestr itp.), Nic nie działało, więc wykonałem pełną dezinstalację i instalację node & npm. Co pomogło rozwiązać problem.

Prasanth Jaya
źródło
0

Całkowite wyłączenie ochrony przed wirusami i zaporą nie jest najbezpieczniejszą opcją. Chociaż przyspiesza to, stajesz się bardziej podatny na ataki.

W moim przypadku wykluczyłem tylko proces node.exe w ochronie przed wirusami i zagrożeniami.

  • W menu Start wpisz „zabezpieczenia systemu Windows” i otwórz aplikację.
  • Kliknij „Ochrona przed wirusami i zagrożeniami”
  • Ustawienia ochrony przed wirusami i zagrożeniami => Zarządzaj ustawieniami
  • Wykluczenia => Dodaj lub usuń wykluczenia
  • Dodaj wykluczenie => proces => wpisz node.exe => kliknij Dodaj

tylko prosta aplikacja create-react-app spadła z 2 min 40 s do 1 min 10 s Polecenia npm są również wykonywane przez node.exe, więc zauważono tam te same ulepszenia.

birgert
źródło
0

Upewnij się, że naprawdę używasz najnowszej wersji npm. W moim przypadku C:\Program Files\nodejs\npm.cmdkorzystałem ze starego npm-cli.jsponiżej domyślnego prefixfolderu %appdata%\npmzamiast nowszego npm-cli.jsponiżej C:\Program Files\nodejs.

Ustawienie zmiennej środowiskowej, npm_config_prefix aby to C:\Program Files\nodejsrozwiązać. (Przed znalezieniem tego rozwiązania próbowałem użyć --prefix argumentu i odkryłem na własnej skórze, że robi to wymusza wykonywanie poleceń nieglobalnych w określonym folderze ).

Zauważyłem ogromny wzrost wydajności z 3.10.9 do 6.13.4 - wystarczająco, aby npm installczasy były akceptowalne pomimo interferencji ze strony antywirusa.

jaz
źródło
0

Właśnie przeszedłem przez króliczą norę, próbując zidentyfikować problem. Jeśli instalacja npm nadal staje się wąska, powinieneś poważnie rozważyć modyfikację właściwości wirtualnej sieci Ethernet i wyłączenie całego odciążania .

Miałem 0 serwerów proxy lub problemy z buforowaniem w npm.

Zobacz tutaj samouczek, jak dostać się do menu i wyłączyć ustawienia odciążania. Upewnij się, że robisz to zarówno dla swojej sieci Ethernet, jak i VEthernet, a od razu zauważysz różnicę. Przeszedłem od 10-minutowego zawieszenia, które czasami po prostu się zatrzymywało, do 10-sekundowych instalacji. https://www.dincloud.com/blog/tuning-windows-get-15x-speeds-on-large-file-copies-today

fengelhardt
źródło