npm 3.10.10 ошибка установки сокета зависания
Я использую Node 6.10.1 и npm 3.10.10 на Dell XPS 15 под управлением Ubuntu 16.04 с ядром 4.13.0.0-36-generic. Я стою за корпоративным прокси, который настроен через cntlm .
Когда я запускаю npm install -d
в проекте, он работает с короткого времени, и через некоторое время я получаю Error: socket hang up
.
Вот выдержка из npm config list
:
; cli configs
user-agent = "npm/3.10.10 node/v6.10.1 linux x64"
; userconfig /home/msb/.npmrc
https-proxy = "http://localhost:3128/"
registry = "http://urlTocorporateRegistryWhichWorksOnOtherComputers"
strict-ssl = false
; node bin location = /home/msb/.nvm/versions/node/v6.10.1/bin/node
; cwd = /home/msb
; HOME = /home/msb
; "npm config ls -l" to show all defaults.
Я не могу изменить реестр, так как мы используем некоторые внутренние модули, и я должен сохранить текущие версии node/npm.
Я уже пробовал :
- использование прокси непосредственно в конфигурации npm, а не через cntlm
- ограничение моих возможностей загрузки / выгрузки с помощью trickle через команду
trickle -s -d 100 -u 100 npm install -d
Еще одно указание : он работает наWindows , и у меня есть коллега, работающийUbuntu 17.04 на более медленном ПК, и он работает для него. Мы думаем, что мой машина может быть слишком грубой, когда запрашивает реестр. Кто-нибудь знает способ замедления запросов npm ?
Раньше он работал через пряжу, но некоторые новые разработки заставили меня вернуться в НПМ.Кто-нибудь сталкивался с этой проблемой и исправлял ее ?
Спасибо за вашу помощь.1 ответ:
Я экспериментировал с той же проблемой, без видимой причины, на Ubuntu 18.04.
Я, наконец, использовал docker с привязкой креплений, чтобы решить эту проблему. Эти шаги следующие:
Теперь вы можете запустить команду
Создайте файл dockerfile со следующими элементами (вы также можете напрямую запустить используемый образ, Если вам не нужно настраивать прокси, как я)
FROM node:6.10.1 ENV HTTPS_PROXY "http://yourproxy:yourport/" # Different RUN commands to configure npm and git corporate proxy WORKDIR /home/root/
Создайте образ (из папки dockerfile):
docker image build -f npm-installer/Dockerfile -t custom-npm-installer .
- зайдите в папку проекта, где вы обычно run
npm install
- выполните следующую команду для интерактивного запуска контейнера:
docker container run -it --network host -v </host/path/to/pj>:/home/root/pj-to-install --name custom-npm-installer custom-npm-installer bash
npm install
из контейнера. Однако будьте осторожны, вам придется использоватьchmod
в папке node_modules рекурсивно, так как контейнер по умолчанию использует root.Другое дело, если вы используете node-sass, он большую часть времени компилируется на лету при установке npm и соответствует текущей версии/архитектуре вашей ОС. Так что если ваш linux дистрибутив не совсем такой же, как у контейнера, вам может потребоваться перекомпилировать node-sass на вашем хосте после запуска
npm install
на контейнере. Не беспокойтесь, node-sass даст вам команду для запуска в тот момент, когда вы запустите приложение.