"Повідомлення не вдалося отримати з реєстру" під час спроби встановити будь-який модуль


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
Dexter

1
Вам також не потрібно оновлювати nodejs, але я б рекомендував це, якщо ви чомусь не прив'язані до версії 6.x.
JohnnyHK

HTTP працює; HTTPS ні, тому що register.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

Потім увімкніть РЕПО вузла та встановіть:

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
Після використання цих інструкцій та отримання помилки сегментації на малиновому пі (Raspbian) я видалив порт і дотримувався цих інструкцій gist.github.com/justinjenkins/16adc15338bb265f6808 зараз він працює!
Джастін Дженкінс

2
-1 для того, щоб рекомендувати новачкам, які нічого не підозрюють, робити щось так само нерозумно і небезпечно, як передавати код з неперевіреного джерела в Інтернеті до кореневої оболонки . Безвідповідальність навряд чи охоплює це. У вас має бути принаймні застереження щодо безпеки, якщо не рекомендація щодо перевірки контрольної суми.
сорпігал

644

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

Мені довелося виконати команду нижче:

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

Однак це дозволить npmвстановити пакети через небезпечне з'єднання HTTP. Якщо можете, вам слід дотримуватися

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

замість цього встановити через HTTPS.


6
Так, це теж зробило для мене. Дякую, що поділились!
Алікс Аксель

7
Використання малинового пі, і це та сама команда, яку я повинен був використовувати. змінено register.npmjs.org/pi-gpio на register.npmjs.org/pi-gpio . Не знаєте, що з https, недоступним пі
Jdahern

28
Попередження: це втягує ресурси в над / незахищеним / з’єднанням. Ваші файли можуть бути змінені до їх отримання. Знову ж таки: це не безпечно.
Lodewijk

38
Не використовуйте це незахищене рішення, навіть якщо воно працює. Версія apt-get Node.js занадто стара (0.6.12); Я встановив останню стабільну версію від GitHub, і це вирішило проблему.
Луї Амлін

2
Він не працюватиме для деяких інших пакетів nodejs. Я просто завантажую новішу версію node.js з офіційного сайту і складаю її вручну.
Олексій Лок

32

Я на Ubuntu. Я використовував apt-get для встановлення вузла. Npm не включався до цього пакету, тому його доводилося встановлювати окремо. Я припускав, що це спрацює, але, очевидно, версія npm у дистрибутиві Ubuntu застаріла.

Вузол wiki має цю інструкцію:

Отримання недавньої версії Node або встановлення на старіші Ubuntu та інші підходящі дистрибутиви можуть потребувати декількох додаткових кроків. Приклад встановлення:

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 falseроздратованих для мене.
Маюра

17

Вам також потрібно встановити властивості програмного забезпечення, загальні для роботи add-apt-сховища. так буде

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

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

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

Єдине, що працювало для мене на Elementar OS 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

2

Наведений нижче метод працював для мене, Kudos для користувача github: midnightcodr

Переконайтеся, що ви видалили вже встановлені пакети nodejs / npm.

sudo apt-get purge nodejs

sudo apt-get purge npm

Тепер встановіть Node js за допомогою команди нижче (спасибі опівночіcodr на 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 npmна OSX.

Зниження npm виправило проблему для мене.

Найпростіший спосіб встановити стабільний npm - це, npm install -g npmале він може не працювати за певних обставин, і тоді може знадобитися пониження node.js.


1

Можливо, у той час реєстр npm був виправлений або ваше з'єднання відпало.

У будь-якому випадку вам слід оновити вузол та npm.

Я рекомендую використовувати нави для управління середовищем вашого вузла.

https://npmjs.org/package/nave

Це дозволяє легко встановлювати версії та швидко переходити між ними.


1

для малинових пі Я знайшов і модифікував рішення, яке я знайшов
ось що я побіг

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. Виконуючи кроки у його відповіді, ви закінчите версію Node0.10.25 - не останню версію.

Вам все-таки слід очистити всі існуючі пакети вузлів / npm

sudo apt-get purge nodejs npm

а потім перейдіть на сторінку встановлення дебюту вузлів за адресою https://github.com/nodesource/distributions#debinstall .

Всі версії Node.js перераховані на вищевказаній сторінці з командами Linux для їх встановлення. І ці пакети будуть працювати як на Debian, так і на Ubuntu .

PS Якщо ви хочете запустити Node v4.4 або новішої версії на Ubuntu Precision або Debian Wheezy, вам слід переглянути інформацію про запуск у старих дистрибутивах .

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

PPPS npm встановлюється разом із вузлом. Після встановлення ви можете оновити до останнього npm за допомогоюsudo npm install npm -g

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