«Сообщение не удалось получить из реестра» при попытке установить какой-либо модуль

355

Я не могу установить ни один модуль узла из npm.

npm install socket.io

Приведенная выше команда привела к выводу ниже, она не может установить socket.io

npm http GET https://registry.npmjs.org/socket.io

npm ERR! Error: failed to fetch from registry: socket.io
npm ERR!     at /opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:139:12
npm ERR!     at cb (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:32:9)
npm ERR!     at Request._callback (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:137:18)
npm ERR!     at Request.callback (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:109:22)
npm ERR!     at Request.<anonymous> (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:198:58)
npm ERR!     at Request.emit (events.js:88:20)
npm ERR!     at ClientRequest.<anonymous> (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:195:10)
npm ERR!     at ClientRequest.emit (events.js:67:17)
npm ERR!     at CleartextStream.<anonymous> (http.js:1134:11)
npm ERR!     at CleartextStream.emit (events.js:67:17)
npm ERR! You may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
npm ERR! 
npm ERR! System Linux 2.6.18-194.el5
npm ERR! command "node" "/opt/node0610/bin/npm" "install" "socket.io"
npm ERR! cwd /opt/node0610/lib/node_modules
npm ERR! node -v v0.6.10
npm ERR! npm -v 1.1.0-3
npm ERR! message failed to fetch from registry: socket.io
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /opt/node0610/lib/node_modules/npm-debug.log
npm not ok

Моя версия NPM:

[applmgr@dev node_modules]$ npm --version
1.1.0-3

Моя версия NodeJS:

[applmgr@dev node_modules]$ node --version
v0.6.10
правый
источник
12
Это довольно старая npmверсия. Обновите его до последней версии и попробуйте снова:sudo npm update npm -g
JohnnyHK
1
Джонни, спасибо за ваш комментарий, на самом деле, если мне нужно обновить npm, я должен также обновить nodejs
Декстер
1
Вам также не нужно обновлять nodejs, но я бы порекомендовал его, если вы по какой-то причине не привязаны к версии 6.x.
JohnnyHK
HTTP работает; HTTPS нет, потому что registry.npmjs.org не слушает HTTPS.
Отметить
1
Я обычно скачиваю и компилирую последнюю версию nodejs с официального сайта . Используемые мной дистрибутивы (обычно Ubuntu LTS) имеют слишком старую версию.
Алекс Локк

Ответы:

805

У меня была эта проблема с npm v1.1.4node v0.6.12), которые являются Ubuntu 12.04версиями хранилища.

Похоже, что эта версия npmбольше не поддерживается, обновление узла (и npm вместе с ним) решило проблему.

Во-первых, удалите устаревшую версию (необязательно, но я думаю, что это исправило проблему с глобальными модулями, которые не были обновлены).

sudo apt-get purge nodejs npm

Затем включите репо nodeource и установите:

curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs

Примечание: предыдущий совет состоял в том, чтобы использовать репо Криса Леа, теперь он перенес это в нодсорс, см .:

От: здесь

Джон Картер
источник
13
Обратите внимание, что пакет nodejs включает в себя npm и nodejs-dev, поэтому при установке nodejs из ppa вы получите все необходимое для npm.
chawkinsuf
2
Спасибо! Это сработало для меня! Это был бы принятый ответ для «Спросить Ubuntu», но кажется, что многие пользователи, не являющиеся пользователями Ubuntu, считают принятый ответ полезным.
Дэнниман
2
запустил это на raspbery pi и получил ошибку сегментации при запуске nodejs или npm
godzilla
5
После использования этих инструкций и получения ошибки сегментации на Raspberry Pi (Raspbian) я удалил порт и следовал этим инструкциям gist.github.com/justinjenkins/16adc15338bb265f6808 теперь он работает!
Джастин Дженкинс
2
-1 за рекомендацию, что ничего не подозревающие новички делают что-то столь же неразумное и небезопасное, как передача кода из непроверенного источника в Интернете в корневую оболочку . Безответственный едва покрывает это. Вы должны по крайней мере иметь предостережение о безопасности, если не рекомендации по проверке контрольной суммы.
Сорпигал
644

https://github.com/isaacs/npm/issues/2119

Я должен был выполнить команду ниже:

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

Однако это приведет к npmустановке пакетов через небезопасное соединение HTTP. Если вы можете, вы должны придерживаться

npm config set registry https://registry.npmjs.org/

вместо этого, чтобы установить поверх HTTPS.

правый
источник
6
Да, это также сделало это для меня. Спасибо, что поделился!
Аликс Аксель
7
Использование Raspberry Pi, и это та же команда, которую я должен был использовать. изменил registry.npmjs.org/pi-gpio на registry.npmjs.org/pi-gpio . Не уверен, что
случилось
28
Предупреждение: это тянет ресурсы через / небезопасное / соединение. Ваши файлы могут быть изменены до того, как вы их получите. Опять же: это не безопасно.
Lodewijk
38
Не используйте это небезопасное решение, даже если оно работает. Apt-get версия Node.js слишком старая (0.6.12); Я установил последнюю стабильную версию от GitHub, и это решило проблему.
Луи Амелин
2
Это не будет работать для некоторых других пакетов nodejs. Я просто скачиваю новую версию node.js с официального сайта и собираю ее вручную.
Алекс Локк
32

Я на Ubuntu. Я использовал apt-get для установки узла. Npm не был включен в этот пакет, поэтому его нужно было устанавливать отдельно. Я предполагал, что это сработает, но, очевидно, версия npm в дистрибутиве Ubuntu устарела.

Узел вики имеет следующую инструкцию:

Для получения последней версии Node или установки в более старую версию Ubuntu и другие дистрибутивы на основе apt может потребоваться несколько дополнительных шагов. Пример установки:

sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

После этого npm уже был включен и работал отлично.

гирооптическая астронавигационная система
источник
18

Для меня это обычно проблема с прокси, и я пробую все:

npm config set registry http://registry.npmjs.org/
npm config set strict-ssl false

npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080

npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \
--without-ssl --insecure -g install
Кэти
источник
4
Отключение строгого SSL с помощью npm config set strict-ssl falsewroked для меня.
Mayura
17

Вам также нужно установить общие свойства программного обеспечения для работы add-apt-repository. так будет

sudo apt-get purge nodejs npm
sudo apt-get install -y python-software-properties python g++ make software-properties-common
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
Tushar
источник
3
После всех вышеперечисленных шагов нам нужно сделать следующее: sudo npm install -g karma
vijay
10

Одна вещь, которая работала для меня со случайными ошибками установки npm (когда пакет, который выдает ошибки, отличается в разное время (но в той же среде), это использовать это:

npm cache clean

А затем повторите процесс. Затем процесс кажется более плавным, и появится реальная проблема и сообщение об ошибке, где вы можете исправить это и затем продолжить.

Это основано на опыте запуска npm установки целой пачки пакетов в довольно простой установке Ubuntu внутри экземпляра Docker. Иногда в Ubuntu отсутствуют инструменты сборки / создания, и ошибки npm не покажут реальной проблемы, пока вы по какой-то причине не очистите кеш.

Эдвард Тан
источник
Да, я обнаружил, что должен был выполнить это в сочетании с ответом оттуда.
Джон Пауэлл
7

Эта проблема связана с протоколом https, поэтому другое решение работает (путем переключения на незащищенный протокол).

Для меня лучшим решением было скомпилировать последнюю версию узла, которая включает npm

apt-get purge nodejs npm
git clone https://github.com/nodejs/node ~/local/node
cd ~/local/node
./configure
make
make install
Venar303
источник
6

Теперь есть официальные инструкции от joyent (основной узел nodejs). Для Ubuntu:

sudo apt-get purge nodejs npm
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs

Для других дистрибутивов Unix, OSX и Windows см. Ссылку. Обратите внимание, это установит как узел, так и npm.

Брайан Лоу
источник
5

Единственное, что сработало для меня на элементарной ОС Luna, на Ubuntu Fork. Я на архитектуре x86. Я попробовал все ответы здесь, но в конце концов решил установить его из источника.

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

sudo apt-get purge nodejs npm -y

Я пошел на страницу загрузки, чтобы найти последний источник и загрузить его, http://nodejs.org/download/ . Вы можете использовать curl, wget или ваш браузер, чтобы получить его:

wget http://nodejs.org/dist/v0.10.34/node-v0.10.34.tar.gz
tar -xvf node-v0.10.34.tar.gz 
cd node-v0.10.34
./configure
make
sudo make install

Создание может занять некоторое время. Когда вы закончите, у вас должен быть установлен нод и npm, работающий в вашем каталоге / usr / local / bin, который уже находится на вашем пути. Вы должны проверить, где он живет:

which npm node

Мне также пришлось изменить разрешения, чтобы заставить его работать:

sudo chown -R $USER /usr/local

Если это не сработало, проверьте ваш путь:

echo $PATH

Обратите внимание, что при его установке он не будет управляться менеджером пакетов apt-get. Ура!

radtek
источник
Пожалуйста, поделитесь, в чем проблема, вместо того, чтобы отмечать это. Меня устраивает! :)
radtek
2

Приведенный ниже метод работал для меня, слава пользователю github: midnightcodr

Убедитесь, что вы удалили все установленные пакеты nodejs / npm.

sudo apt-get purge nodejs

sudo apt-get purge npm

Теперь установите Node js, используя команду ниже (спасибо midnightcodr на github)

curl -L https://raw.github.com/midnightcodr/rpi_node_install/master/setup.sh | bash -s 0.10.24

Обратите внимание, что вы можете вызывать узел с помощью командного узла, а не nodejs.

После установки узла установите npm

sudo apt-get install npm
Ишвар Раджеш Пинапала
источник
2

Недавно у меня возникла эта проблема после обновления node.js (и неизбежно npm) до последней версии:

> npm --version < 2.0.0-alpha-5

Примечание: я не просил нестабильную версию, я просто получил ее после brew install npmOSX.

Понижение npm решило проблему для меня.

Самый простой способ установить стабильный npm - npm install -g npmэто то, что он может не работать при некоторых обстоятельствах, и тогда может потребоваться понижение версии node.js.

Михал Мищин
источник
1

Это может быть связано с тем, что в то время реестр npm был недоступен или ваше соединение оборвалось.

В любом случае вы должны обновить узел и npm.

Я бы порекомендовал использовать Nave для управления средами вашего узла.

https://npmjs.org/package/nave

Позволяет легко устанавливать версии и быстро переключаться между ними.

Сербы
источник
1

для Raspberry Pi я нашел и изменил решение, которое я нашел
здесь, это то, что я побежал

sudo su -
cd /opt
wget http://nodejs.org/dist/v0.10.28/node-v0.10.28-linux-arm-pi.tar.gz
tar xvzf node-v0.10.28-linux-arm-pi.tar.gz
ln -s node-v0.10.28-linux-arm-pi node
chmod a+rw /opt/node/lib/node_modules
chmod a+rw /opt/node/bin
echo 'PATH=$PATH:/opt/node/bin' > /etc/profile.d/node.sh

единственный мод, который я сделал, это поменял все 10.25 на 10.28, что было самым последним linux-arm-pi на тот момент

Годзилла
источник
0

@ Оттуда ответ самый лучший. Однако версии Node постоянно перемещались вверх и вверх, и управление версиями осложнялось появлением io.js. Следуя инструкциям в его ответе, вы получите версию Node 0.10.25- не самую последнюю версию.

Вы все равно должны удалить все существующие пакеты node / npm с помощью

sudo apt-get purge nodejs npm

а затем перейдите на страницу установки deb для nodeource по адресу https://github.com/nodesource/distributions#debinstall .

Все версии Node.js перечислены на приведенной выше странице вместе с командами Linux для их установки. И эти пакеты будут работать как на Debian, так и на Ubuntu .

PS Если вы хотите запустить Node v4.4 или выше на Ubuntu Precise или Debian Wheezy, вам следует ознакомиться с информацией о работе на старых дистрибутивах .

PPS Если ваш apt-get не работает , скрипт не будет завершен (ссылки Google не сработали apt-get update). Вы должны увидеть сообщения о том, что ключ подписи NodeSource добавлен в ваш брелок, и последнее сообщение с указанием Run 'apt-get install nodejs' to install Node.js.

PPPS npm устанавливается вместе с узлом. После установки вы можете обновить до последней версии с помощьюsudo npm install npm -g

Timbo
источник