“Pesan gagal diambil dari registri” saat mencoba memasang modul apa pun

355

Saya tidak dapat menginstal modul node apa pun dari npm.

npm install socket.io

Perintah di atas menghasilkan output di bawah ini, tidak dapat menginstal 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

Versi NPM saya adalah:

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

Versi NodeJS saya adalah:

[applmgr@dev node_modules]$ node --version
v0.6.10
Dexter
sumber
12
Itu npmversi yang cukup lama . Perbarui ke yang terbaru dan coba lagi:sudo npm update npm -g
JohnnyHK
1
johny terima kasih atas komentar Anda, sebenarnya jika saya perlu memperbarui npm haruskah saya juga memperbarui nodejs
Dexter
1
Anda tidak harus memperbarui nodejs juga, tetapi saya akan merekomendasikannya jika Anda tidak terikat dengan versi 6.x karena alasan tertentu.
JohnnyHK
HTTP berfungsi; HTTPS tidak, karena registry.npmjs.org tidak mendengarkan HTTPS.
Tandai
1
Saya biasanya mengunduh & mengkompilasi versi terbaru dari nodejs dari situs resmi . Distribusi yang saya gunakan (biasanya Ubuntu LTS) memiliki versi terlalu lama.
Alex Lokk

Jawaban:

805

Saya punya masalah dengan npm v1.1.4(dan node v0.6.12), yang merupakan Ubuntu 12.04versi repositori.

Sepertinya versi npmtidak lagi didukung, memperbarui simpul (dan npm dengannya) menyelesaikan masalah.

Pertama, hapus instalan versi yang sudah usang (opsional, tapi saya pikir ini memperbaiki masalah yang saya alami dengan modul global yang tidak dilalui).

sudo apt-get purge nodejs npm

Kemudian aktifkan repo nodesource dan instal:

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

Catatan - saran sebelumnya adalah menggunakan repo Chris Lea, dia sekarang bermigrasi ke nodesource, lihat:

Dari: sini

John Carter
sumber
13
Perhatikan bahwa paket nodejs termasuk npm dan nodejs-dev, jadi menginstal nodejs dari ppa memberi Anda segala yang dibutuhkan untuk npm.
chawkinsuf
2
Terima kasih! Ini berhasil untuk saya! Ini akan menjadi jawaban yang diterima untuk "Tanya Ubuntu" tetapi tampaknya banyak pengguna non-Ubuntu menemukan jawaban yang diterima itu membantu.
dannyman
2
berlari ini pada raspbery pi dan mendapat Segmentation fault saat menjalankan nodejs atau NPM
godzilla
5
Setelah menggunakan instruksi ini dan mendapatkan kesalahan Segmentasi pada raspberry pi (Raspbian), saya menghapus port dan mengikuti instruksi ini gist.github.com/justinjenkins/16adc15338bb265f6808 sekarang berfungsi!
Justin Jenkins
2
-1 untuk merekomendasikan bahwa pendatang baru yang tidak menaruh curiga melakukan sesuatu yang tidak bijaksana dan tidak aman seperti kode perpipaan dari sumber yang tidak diverifikasi di internet ke shell root . Yang tidak bertanggung jawab sulit menutupinya. Anda setidaknya harus memiliki peringatan tentang keselamatan jika bukan rekomendasi untuk memverifikasi sebuah checksum.
sorpigal
644

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

Saya harus menjalankan perintah di bawah ini:

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

Namun, itu akan membuat npmpaket instalasi melalui koneksi HTTP tidak aman. Jika Anda bisa, Anda harus tetap dengan

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

alih-alih menginstal lebih dari HTTPS.

Dexter
sumber
6
Yup, ini juga melakukannya untuk saya. Terima kasih telah berbagi!
Alix Axel
7
Menggunakan pi raspberry, dan ini adalah perintah yang sama yang harus saya gunakan. mengubah registry.npmjs.org/pi-gpio menjadi registry.npmjs.org/pi-gpio . Tidak yakin ada apa dengan https yang tidak dapat diakses oleh pi
Jdahern
28
Peringatan: ini menarik sumber daya melalui / tidak aman / koneksi. File Anda dapat diubah sebelum Anda mendapatkannya. Sekali lagi: ini tidak aman.
Lodewijk
38
Jangan gunakan solusi tidak aman ini, meskipun itu berfungsi. Versi apt-get Node.js terlalu lama (0.6.12); Saya menginstal versi stabil terbaru dari GitHub dan itu memecahkan masalah.
Louis Ameline
2
Ini tidak akan berfungsi untuk beberapa paket nodejs lainnya. Saya hanya mengunduh versi node.js yang lebih baru dari situs resmi dan mengompilasinya dengan tangan.
Alex Lokk
32

Saya di Ubuntu. Saya menggunakan apt-get untuk menginstal node. Npm tidak termasuk dalam paket itu, jadi harus diinstal secara terpisah. Saya berasumsi itu akan berhasil, tetapi ternyata versi npm dalam distribusi Ubuntu sudah ketinggalan zaman.

Wiki simpul memiliki instruksi ini:

Mendapatkan Node versi terbaru atau menginstal pada Ubuntu yang lebih lama dan distribusi berbasis apt lainnya mungkin memerlukan beberapa langkah tambahan. Contoh instal:

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

Setelah itu, npm sudah dimasukkan dan bekerja dengan sempurna.

geon
sumber
18

Bagi saya, biasanya masalah proxy, dan saya mencoba segalanya:

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

npm config set proxy http://myusername:[email protected]:8080
npm config set https-proxy http://myusername:[email protected]:8080
set HTTPS_PROXY=http://myusername:[email protected]:8080
set HTTP_PROXY=http://myusername:[email protected]:8080
export HTTPS_PROXY=http://myusername:[email protected]:8080
export HTTP_PROXY=http://myusername:[email protected]:8080
export http_proxy=http://myusername:[email protected]:8080

npm --proxy http://myusername:[email protected]:8080 \
--without-ssl --insecure -g install
Katie
sumber
4
Menonaktifkan SSL Ketat dengan menggunakan npm config set strict-ssl falsewroked for me.
Mayura
17

Anda juga perlu menginstal perangkat lunak-properti-umum agar add-apt-repository berfungsi. jadi itu akan menjadi

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
sumber
3
Setelah langkah-langkah di atas, yang perlu kita semua lakukan adalah: sudo npm install -g karma
vijay
10

Satu hal yang telah bekerja untuk saya dengan kesalahan instalasi npm acak (di mana paket yang keluar kesalahan berbeda di bawah waktu yang berbeda (tetapi lingkungan yang sama) adalah menggunakan ini:

npm cache clean

Dan kemudian ulangi prosesnya. Maka proses tampaknya berjalan lebih lancar dan masalah dan pesan kesalahan yang sebenarnya akan muncul, di mana Anda dapat memperbaikinya dan kemudian melanjutkan.

Ini didasarkan pada pengalaman menjalankan instalasi npm dari sejumlah paket di bawah instalasi Ubuntu yang cukup telanjang di dalam instance Docker. Terkadang ada build / make tools yang hilang dari Ubuntu dan kesalahan npm tidak akan menunjukkan masalah yang sebenarnya sampai Anda membersihkan cache untuk beberapa alasan.

Edward Tan
sumber
Ya, saya menemukan saya harus menjalankan ini, bersamaan dengan jawaban dari sana.
John Powell
7

Masalah ini disebabkan oleh protokol https, itulah sebabnya solusi lain berfungsi (dengan beralih ke protokol yang tidak aman).

Bagi saya, solusi terbaik adalah mengkompilasi versi terbaru dari node, yang mencakup npm

apt-get purge nodejs npm
git clone https://github.com/nodejs/node ~/local/node
cd ~/local/node
./configure
make
make install
Venar303
sumber
6

Sekarang ada instruksi resmi dari joyent (pendukung nodejs primer). Untuk Ubuntu:

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

Untuk distribusi unix lainnya, osx dan windows lihat tautannya. Catatan ini akan menginstal node dan npm.

Brian Low
sumber
5

Satu-satunya yang bekerja untuk saya di Elementary OS Luna, Ubuntu Fork. Saya menggunakan arsitektur x86. Saya mencoba semua jawaban di sini tetapi akhirnya memutuskan untuk menginstalnya dari sumber.

Pertama, pastikan itu tidak diinstal menggunakan manajer paket:

sudo apt-get purge nodejs npm -y

Saya pergi ke halaman unduh untuk mencari sumber terbaru & mengunduhnya, http://nodejs.org/download/ . Anda dapat menggunakan curl, wget atau browser Anda untuk mendapatkannya:

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

Merek mungkin butuh beberapa saat. Setelah selesai, Anda harus menginstal node dan npm dan bekerja di direktori / usr / local / bin Anda yang seharusnya sudah ada di jalur Anda. Anda harus memverifikasi di mana ia tinggal:

which npm node

Saya juga harus mengubah izin untuk membuatnya berfungsi:

sudo chown -R $USER /usr/local

Jika tidak berhasil periksa jalur Anda:

echo $PATH

Perhatikan bahwa menginstalnya dengan cara ini, itu tidak akan dikelola oleh manajer paket apt-get. Bersulang!

radtek
sumber
Silakan bagikan apa masalahnya daripada menandai ini. Ini bekerja untuk saya! :)
radtek
2

Metode di bawah ini bekerja untuk saya, Kudos kepada pengguna github: midnightcodr

Pastikan Anda menghapus paket nodejs / npm yang sudah diinstal.

sudo apt-get purge nodejs

sudo apt-get purge npm

Sekarang Instal Node js menggunakan perintah di bawah ini (Terima kasih kepada midnightcodr di github)

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

Perhatikan bahwa Anda dapat memanggil node dengan node perintah dan bukan nodejs.

Setelah node diinstal, Instal npm

sudo apt-get install npm
Eswar Rajesh Pinapala
sumber
2

Baru-baru ini saya mengalami masalah ini setelah memutakhirkan node.js (dan mau tidak mau npm) ke versi terbaru:

> npm --version < 2.0.0-alpha-5

Catatan: Saya tidak meminta versi yang tidak stabil, saya baru mendapatkannya setelah brew install npmdi OSX.

Menurunkan npm memperbaiki masalah untuk saya.

Cara termudah untuk menginstal npm stabil adalah npm install -g npmtetapi mungkin tidak berfungsi dalam beberapa keadaan dan downgrade node.js mungkin diperlukan saat itu.

Michał Miszczyszyn
sumber
1

Bisa jadi registri npm sedang down pada saat itu atau koneksi Anda terputus.

Either way Anda harus memutakhirkan node dan npm.

Saya akan merekomendasikan menggunakan nave untuk mengelola lingkungan simpul Anda.

https://npmjs.org/package/nave

Ini memungkinkan Anda untuk dengan mudah menginstal versi dan dengan cepat melompat di antara mereka.

serby
sumber
1

untuk raspberry pi saya menemukan dan memodifikasi solusi yang saya temukan di
sini adalah apa yang saya jalankan

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

satu-satunya mod yang saya lakukan adalah mengubah semua 10.25 menjadi 10.28 yang merupakan linux-arm-pi terbaru saat itu

Godzilla
sumber
0

@ dari situ jawabannya adalah yang terbaik. Namun versi Node telah bergerak maju dan naik, dan versinya rumit oleh munculnya io.js. Mengikuti langkah-langkah dalam jawabannya, Anda akan berakhir dengan versi Node 0.10.25- bukan versi terbaru.

Anda masih harus membersihkan semua paket node / npm yang ada

sudo apt-get purge nodejs npm

dan kemudian pergi dan lihat halaman instal deb nodesource di https://github.com/nodesource/distributions#debinstall .

Semua versi Node.js tercantum pada halaman di atas dengan perintah Linux untuk menginstalnya. Dan paket-paket ini akan bekerja pada Debian dan Ubuntu .

PS Jika Anda ingin menjalankan Node v4.4 atau lebih tinggi di Ubuntu Precise atau Debian Wheezy, Anda harus meninjau informasi tentang menjalankan di distro yang lebih lama .

PPS Jika apt-get Anda gagal , skrip tidak akan selesai (referensi Google gagal saya apt-get update). Anda harus melihat pesan tentang kunci penandatanganan NodeSource yang ditambahkan ke kunci Anda dan pesan terakhir yang memerintahkan Anda untuk melakukannya Run 'apt-get install nodejs' to install Node.js.

PPPS npm diinstal dengan node. Setelah diinstal, Anda dapat memperbarui ke npm terbaru dengansudo npm install npm -g

timbo
sumber