Подтвердить что ты не робот

Супер медленные команды node npm

У меня есть node v.4.4 с npm v.2.14.20 (по умолчанию в комплекте с установщиком Windows). Моя ОС: Windows 7 64bit. Аппаратное обеспечение: ноутбук Dell, 16 ГБ оперативной памяти, SSD, ядро ​​i7.

Я столкнулся с проблемой с чрезвычайно медленным npm. Например, когда я хочу проверить версию node с помощью

node --version
v4.4.0

Я получаю вывод 4.4.0 в пределах miliseconds. Но когда я печатаю

npm --version

Мне нужно подождать смешного 8-15 секунд, чтобы получить выход! И это одинаково для каждой команды npm.

Что я пробовал: обновить npm (до последней версии 3.x), обновить node до 5.9.0, я также попробовал удачу с версиями x86 - то же самое.

  • Любые подсказки, которые могут вызвать такой "сон" (это только при npm, всякая команда cmd работает нормально, система работает нормально)?
  • Я буду благодарен за любые советы, как я могу отладить эту вещь, чтобы посмотреть, что происходит под капотом.
4b9b3361

Ответ 1

Я уверен, что у вас много элементов в PATH. Это общий признак этого сценария.

В вашем терминале запустите:

echo "$PATH"

Если на выходе имеется более 8 или 9 двоеточий, или есть большие каталоги, такие как корневой каталог /, то это очень хорошо может быть виновником.

В качестве основы для сравнения мой тщательно обработанный PATH на macOS:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

И если я запустил which npm, вывод будет следующим:

/usr/local/bin/npm

Это говорит мне, что мой npm находится в начале моего PATH, что важно для производительности, поскольку поиск PATH слева направо для существования npm в каждом каталоге.

Вы можете быстро опробовать мой PATH сверху без каких-либо постоянных последствий, просто выполнив:

OLDPATH="$PATH"
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

Теперь попробуйте запустить команды, которые были раньше и медленнее, и посмотреть, есть ли разница.

Если вы начинаете видеть ошибки "команда не найдена", попробуйте поэтапно добавить вещи обратно к вашему PATH или просто запустите:

PATH="$OLDPATH"

В противном случае, если производительность не изменится, значит, это не ваш PATH. Но если ситуация улучшилась, читайте дальше, чтобы сделать ее постоянной.

Возьмите PATH, который лучше всего подходит для вас, и поместите его в файл запуска оболочки. Обычно это будет находиться в ~/.bashrc или ~/.bash_profile. Попробуйте найти файл запуска, у которого уже есть строка PATH=..., закомментируйте существующую строку (обязательно добавьте пояснительный комментарий), а затем вставьте аналогичную строку с лучшим значением.