'npm install' надзвичайно повільно на Windows


84

Для мене це npm installнадзвичайно повільно. Я використовую Windows 8.1 з останньою версією npm. Швидкість мого з’єднання становить близько 100 Мбіт / с.

Проект, який я намагаюся встановити, має близько 20 пакетів / залежностей, і на встановлення всіх залежностей потрібно близько 30 хвилин ...

Хтось має підказку?


2
У мене це питання теж сьогодні. Досить свіжо побудований ящик Windows 8.1, сьогодні я встановив node.js та npm. npm встановлення працює дуже повільно при спробі встановити bower. npm v2.7.4 nodejs v0.12.2
Stuntbeaver

@Simon Knittel Ви це вирішили?
Томаш Ващик

@PantaRhei Я не знаю, чи це рішення, але для мене було різницею, чи встановлюю я модулі на накопичувач USB3 або на внутрішній жорсткий диск.
Саймон Кніттель

@simon це може бути блокуванням вашого брандмауера, інакше змусити вас оновити Nodejs та npm
Seif Tamallah

@Pnta, ви можете спробувати оновити Nodejs та npm та вимкнути брандмауер
Seif Tamallah

Відповіді:


34

Я зіткнувся з тією ж проблемою, використовуючи, --verboseяк згаданий peterh показав мені джерело проблеми: я стою за проксі, який використовує власні сертифікати для https-з'єднань. За словами користувача "Mletter1" на https://github.com/npm/npm/issues/8872, проблема досить легко вирішується за допомогою http:

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

І вуаля, це знову швидко. Звичайно, ви повинні робити це лише у тому випадку, якщо у вас все в порядку з прозорим текстом npm по мережі ;-)


Просто натрапив на це при використанні Windows WSL проти VirtualBox Docker (Toolbox). NPM повільний, як бруд, перенаправляючи мій WSL (debian) на http npmjs.org значно пришвидшив процес.
deepelement

Щоб додати ще одне корисне посилання, схоже, що на використання WSL NPM також впливає Захисник Windows. gist.github.com/noelbundick/9c804a710eb76e1d6a234b14abf42a52
deepelement

4
Але чи не небезпечно це? Викриває вам атаки MIM
GiriB

19

Застереження. Проблеми щодо безпеки: сподіваємось, ви знаєте, що завантажуєте у свою папку node_modules, правда;)

Від вічності → до 5 секунд :

  • пошук налаштувань Windows Defender
  • → Захист від вірусів та загроз
  • → Налаштування захисту від вірусів та загроз
  • → Виключення

тут додайте два шляхи до вашого списку виключених папок захисту в режимі реального часу :

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

PS : замініть на <your username>відповідне ім'я папки користувача .
Якщо ви блукаєте, чому не можете знайти папку AppData в Провіднику, обов’язково поставте прапорець Переглянути параметри прихованих папок.


1
Для мене це чудово працює, його слід також додати в папку робочої області, де у вас є локальні папки node_modules для проектів.
Xun Yang

@Chet дайте мені знати, коли ви змусите це працювати те, що ви робили
Роко С.

Я увійшов у захисник і вимкнув усі засоби захисту від вірусів та загроз, захист всієї мережі та брандмауера, вимкнув функцію "перевіряти програми та файли". Я також додав деякі налаштування npm для повороту прогресу та встановив URL-адресу реєстру на http замість https. Зараз це трохи швидше.
Чет

4
@Chet yap, зараз зараження вірусами повинні йти швидше 🙈
Роко С.

1
Це план! 🤞
Чет

11

Я певний час стикався з такою ж проблемою. Я пробував наступне

npm i typescript live-server --save-dev

Встановлення застрягло б у ньому назавжди. Однак додавання прапора -verbose спрацювало чудово.


2
Але чому це -verboseробить різницю?
Ітамар Біттон


4

Здається, npm погано справляється з підключенням до Інтернету і іноді може закінчитися в такій ситуації.

1) Я порадитиму вам перевірити, чи ваш брандмауер чи антивірус не виконує жодного сканування чи фільтрації, що може сповільнити встановлення npm.

2) Ви також можете використовувати кешування від npm, як показано нижче.

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

це дозволить завантаження npm та залежності кешу у вказаному каталозі.

3) іншим рішенням для кешування залежностей пакетів npm є npm lazy , ви можете знайти більше інформації про це на веб-сайті npm Lazy

Примітка: процес кешування може або не може покращити швидкість завантаження, але це, ймовірно, заощадить час завантаження під час встановлення або оновлення ваших пакетів npm.


3

Вимкнення брандмауера Windows і захисту Windows Defender у режимі реального часу зробили це для мене в Windows 10.


2

Для мене це виявилося проблемою з IPv6.

Вимкнення IPv6 мені надзвичайно допомогло.
Коли IPv6 увімкнено, "update-package newtonsoft.json" зайняв 1:45 тайм-аут із помилкою "update-package: завдання скасовано".

З вимкненим IPv6 "пакет оновлення newtonsoft.json" завершено за 10 секунд


Вимкнення IPv6 допомогло мені з подібною проблемою у Fedora 23
malloc4k

1

Я зіткнувся з тією ж проблемою під час створення проекту під час використання кутового кліпу "ng new PROJECT_NAME", ця команда викликає "npm -install" після створення проекту, який зайняв занадто багато часу, і застряг у "Встановлення пакетів для інструментальних робіт за допомогою npm". Слідуйте цим, що працювали на мене

1) Перевірте свою версію npm "npm --version" (має бути вище 2.1.8) Оновіть свій пакет npm за допомогою "npm -g install --save latest-version"

2) Видаліть індикатор виконання, який забирає більше часу "npm set progress = false"

перевірте ці проблеми, якщо проблема не вирішена https://github.com/nodejs/node/issues/4150 https://github.com/npm/npm/issues/11283

Сподіваємось, це вирішує проблему Ура!


1

Вимкнення брандмауера Windows Defender мені допомогло.

Оскільки це просто не добре, я спочатку додав WIFI до приватної мережі (через налаштування WIFI) і лише вимкнув захисник Windows для приватної мережі замість усіх загальнодоступних мереж.

Наступним кроком має бути: який мережевий трафік спричиняє це та як додати це до правила виключення Windows Defender :)


0

Я спробував усі конфігури (проксі, реєстр тощо) у мене нічого не працювало, так само зробив повне видалення та встановлення node & npm. Що допомогло вирішити питання.


0

Повне вимкнення захисту від вірусів та брандмауера - не найбезпечніший варіант. Хоча це робить справи швидшими, але робить вас більш вразливими.

У моєму випадку я виключив лише процес node.exe у захисті від вірусів та загроз.

  • У меню "Пуск" введіть "безпека Windows" і відкрийте програму.
  • Натисніть "Захист від вірусів та загроз"
  • Налаштування захисту від вірусів та загроз => Керувати налаштуваннями
  • Виключення => Додавання або видалення виключень
  • Додайте виключення => процес => введіть node.exe => натисніть Додати

просто простий додаток create-реагувати знизився з 2m40s до 1m10s npm-команди також виконуються node.exe, тому там помічаються ті самі вдосконалення.


0

Переконайтеся, що ви дійсно використовуєте останню версію npm. У моєму випадку я C:\Program Files\nodejs\npm.cmdвикористовував стару npm-cli.jsнижче prefixпапку за замовчуванням, %appdata%\npmа не нову npm-cli.jsнижче C:\Program Files\nodejs.

Встановлення змінної середовища npm_config_prefix для C:\Program Files\nodejsвирішення цього. (Перш ніж знайти це рішення, я спробував використати --prefix аргумент і зрозумів, що це важко " змушує неглобальні команди запускатись у зазначеній папці " .)

Я виявив величезне підвищення продуктивності, яке перейшло з 3.10.9 до 6.13.4 - достатньо, щоб зробити npm installчаси прийнятними, незважаючи на втручання антивіруса.


0

Я щойно пройшов крізь кролячу нору, намагаючись виявити проблему. Якщо програма встановлення npm продовжує залишатися вузьким місцем, вам слід задуматися про зміну властивостей вашого віртуального Ethernet і вимкнути всі елементи розвантаження .

У мене було 0 проксі-серверів або проблеми з кешуванням з npm.

Дивіться тут підручник про те, як перейти до меню та вимкнути налаштування розвантаження. Переконайтеся, що ви робите це як для свого Ethernet, так і для VEthernet, і ви повинні негайно помітити різницю. Я пішов з 10-хвилинної роздільної здатності, яка іноді просто зупинялася до 10 секунд. https://www.dincloud.com/blog/tuning-windows-get-15x-speeds-on-large-file-copies-today

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.