モジュールをインストールしようとしたときに「メッセージをレジストリから取得できませんでした」


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は機能します。Registry.npmjs.orgはHTTPSをリッスンしていないため、HTTPSはサポートしていません。
マーク・

1
私は通常、公式サイトからnodejsの最新バージョンをダウンロードしてコンパイルします。私が使用するディストリビューション(通常はUbuntu LTS)のバージョンが古すぎます。
Alex Lokk、2014

回答:


805

リポジトリバージョンであるnpm v1.1.4(およびnode v0.6.12)でこの問題が発生しUbuntu 12.04ました。

そのバージョンのnpmはもうサポートされていないようです。ノード(およびそれを使用したnpm)を更新すると問題が解決しました。

まず、古いバージョンをアンインストールします(オプションですが、これにより、グローバルモジュールがパスされないという問題が修正されたと思います)。

sudo apt-get purge nodejs npm

次に、nodesourceのリポジトリを有効にしてインストールします。

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

注-以前のアドバイスはChris Leaのリポジトリを使用することでしたが、現在はそれをnodesourceに移行しています。以下を参照してください。

から:ここ


13
nodejsパッケージにはnpmとnodejs-devが含まれているため、ppaからnodejsをインストールすると、npmに必要なすべてのものが得られます。
chawkinsuf 14

2
ありがとう!これは私のために働いた!これは「Ask Ubuntu」の承認された回答ですが、Ubuntu以外の多くのユーザーは、承認された回答が役立つと考えているようです。
ダニーマン2014年

2
これをraspbery piで実行し、nodejsまたはnpmを実行するとセグメンテーションエラーが発生しました
godzilla

5
これらの手順を使用して、ラズベリーpi(Raspbian)でセグメンテーション違反を取得した後、ポートを削除し、これらの手順gist.github.com/justinjenkins/16adc15338bb265f6808に従って動作しました。
Justin Jenkins

2
-1は、疑いを持たない新規参入者が、インターネット上の未検証のソースからルートシェルにコードパイプするのと同じくらい賢くなく安全でないことを行うことを推奨します。無責任はそれをほとんどカバーしません。チェックサムを検証するための推奨事項ではない場合でも、少なくとも安全性に関する警告が必要です。
sorpigal

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
うん、これも私のためにそれをやった。共有してくれてありがとう!
Alix Axel

7
ラズベリーパイを使用すると、これは私が使用しなければならなかったのと同じコマンドです。registry.npmjs.org/pi-gpioregistry.npmjs.org/pi-gpioに変更しました。piからアクセスできないhttpsがどうなっているかわからない
Jdahern

28
警告:これにより、/ insecure /接続を介してリソースが取得されます。取得する前にファイルが変更されている可能性があります。繰り返しますが、これは安全ではありません。
Lodewijk 14

38
この安全でないソリューションは、機能しても使用しないでください。Node.jsのapt-getバージョンが古すぎます(0.6.12)。GitHubから最新の安定バージョンをインストールし、問題を解決しました。
Louis Ameline 14

2
他の一部のnodejsパッケージでは機能しません。公式サイトからnode.jsの新しいバージョンをダウンロードして、手動でコンパイルしています。
Alex Lokk 2014

32

私はUbuntuにいます。apt-getを使用してノードをインストールしました。Npmはそのパッケージに含まれていなかったため、個別にインストールする必要がありました。私はそれがうまくいくと思いましたが、どうやらUbuntuディストリビューションのnpmバージョンは古くなっています。

ノードwikiには次の指示があります。

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
npm config set strict-ssl falsewrokedを使用してStrict SSLを無効にする。
Mayura、2015年

17

add-apt-repositoryを機能させるには、software-properties-commonもインストールする必要があります。そうなります

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
上記の手順の後、必要な作業は次のとおりです
。sudonpm

10

ランダムなnpmインストールエラー(エラーが発生するパッケージが異なる時間(ただし同じ環境)で異なる場合)で私のために機能した1つのことは、これを使用することです。

npm cache clean

そして、プロセスを繰り返します。その後、プロセスはよりスムーズになり、実際の問題とエラーメッセージが表示されます。そこで修正して続行できます。

これは、Dockerインスタンス内のかなり裸のUbuntuインストールの下で、パッケージ全体のnpmインストールを実行した経験に基づいています。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(primary nodejs backer)からの公式指示があります。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

Elementary OS Luna、Ubuntuフォークで私のために働いた唯一のもの。私は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

メイクにはしばらく時間がかかる場合があります。完了したら、nodeと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

以下のコマンドを使用してノードjsをインストールします(githubのmidnightcodrに感謝)

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

nodejsではなくコマンドnodeでnodeを呼び出すことができることに注意してください。

ノードがインストールされたら、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をアップグレードする必要があります。

naveを使用してノード環境を管理することをお勧めします。

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

@therefromhereの答えが最高です。ただし、Nodeのバージョンはこれまで以上に移動しており、io.jsの再統合によりバージョン管理が複雑になりました。彼の回答の手順に従うと、0.10.25最新バージョンではなく、ノードバージョンになります。

それでも、既存のnode / npmパッケージをすべて削除する必要があります

sudo apt-get purge nodejs npm

次に、https://github.com/nodesource/distributions#debinstallのnodesource debインストールページに移動して確認ます

上記のページには、すべてのNode.jsバージョンが、それらをインストールするためのLinuxコマンドとともにリストされています。そして、これらのパッケージはDebianとUbuntuの両方で動作します。

PS Ubuntu PreciseまたはDebian WheezyでNode v4.4以降を実行する場合は、古いディストリビューションでの実行に関する情報を確認する必要があります

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.