Npm зависает в postinstall/unlock
У меня есть сервер Linux, на котором запущены некоторые виртуальные машины с использованием KVM. Хост-машина является дериватором Debian с ядром 2.6.32-32 (-pve).
В примерно 75% случаев я запускаю npm install
, он зависает при установке модулей. Я запустил его с глупым уровнем отладки, и он всегда зависает на линии
npm info postinstall [module name]
(более старые версии npm)
или
npm verb unlock done using [...]
(новые версии npm)
навсегда.
Это происходит в каждом проекте на главном компьютере и в виртуализованных системах для каждого node и каждой версии npm, которую я тестировал (много, включая новейшие (2.7.x atm)).
Он также не детерминирован. Иногда это работает, иногда нет, и большую часть времени он висит на другом модуле.
На моей машине dev (которая находится в той же сети, на которой работает OS X 10.10) она отлично работает.
Я не поддерживаю какой-либо прокси.
Что здесь может быть неправильным?
EDIT. Пока я решил эту проблему, проверяя все мои зависимости как gzipped файлы, используя https://github.com/JamieMason/shrinkpack
Ответы
Ответ 1
У меня была такая же проблема в течение нескольких часов, и я не мог решить, в чем проблема. Я попытался переустановить все несколько раз, вручную установив отдельные модули, переключившись с x64 на x86 версии NodeJS и т.д., И не получил нигде.
В конце концов, я изменил сети, от WiFi по ADSL2 + [~ 2mbps] до 4G Hotspot [~ 20mbps], и он работал через 30 секунд. Не знаю, почему, поскольку это не похоже на проблему с сетевой скоростью, но она решила проблему.
Надеюсь, это тоже поможет кому-то другому!
Ответ 2
У меня была та же проблема с нашими подчиненными Jenkins на основе Ubuntu, и она была решена путем обновления npm
.
По умолчанию npm
, установленный apt-get
, теперь имеет версию 1.3.10
, которая очень старая (показана npm --version
). Существует как минимум два способа его обновления:
- Запустите команду
sudo npm install -g npm
. Если вы хотите установить определенную версию, вы можете запустить ее в конце команды: sudo npm install -g [email protected]
.
- Или вы можете добавить репозитории NodeSource, используя эти инструкции и запустить обычный
sudo apt-get update
.
Ответ 3
У меня такая же проблема на Windows
. Я удалил папку npm-cache
и переустановил npm
. После этого все нормально работало.
Папка npm-cache
можно найти в
<your-drive>\Users\<your-name>\AppData\Roaming\npm-cache
Не забудьте включить "Просмотреть скрытые файлы, потому что папка AppData по умолчанию скрыта
Вы можете переустановить npm с помощью команды
npm i npm -g
Ответ 4
Я сделал то же самое, переключил свою сеть с WiFi на 3G и работал.
Ответ 5
У меня такая же проблема, это проблема Github:
https://github.com/npm/npm/issues/7862
Есть несколько полезных советов, которые, казалось, помогли нескольким людям.
Для меня установка $npm install -g node -gyp (как предлагается здесь: http://gangmax.me/blog/2013/05/13/resolve-npm-update-node-gyp-hung-problem/) устранена проблема.
Ответ 6
У меня была такая же проблема и просто бегаю
npm cache clean
И это работает!
Ответ 7
Была такая же проблема в Windows. Решением было перезагрузить компьютер после установки узла и npm, а затем запустить командную строку от имени администратора.