Tin nhắn bị lỗi không thể tìm nạp từ registry Trong khi cố gắng cài đặt bất kỳ mô-đun nào


355

Tôi không thể cài đặt bất kỳ mô-đun nút nào từ npm.

npm install socket.io

Lệnh trên dẫn đến kết quả đầu ra bên dưới, nó không thể cài đặt 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

Phiên bản NPM của tôi là:

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

Phiên bản NodeJS của tôi là:

[applmgr@dev node_modules]$ node --version
v0.6.10

12
Đó là một npmphiên bản khá cũ . Cập nhật nó mới nhất và thử lại:sudo npm update npm -g
JohnnyHK

1
johny cảm ơn vì nhận xét của bạn, thực sự nếu tôi cần cập nhật npm thì tôi cũng nên cập nhật nodejs
Dexter

1
Bạn cũng không phải cập nhật nodejs, nhưng tôi sẽ khuyên bạn nên sử dụng nó nếu bạn không bị ràng buộc với phiên bản 6.x vì một số lý do.
JohnnyHK

HTTP hoạt động; HTTPS thì không, vì registry.npmjs.org không nghe HTTPS.
Đánh dấu

1
Tôi thường tải xuống và biên dịch phiên bản mới nhất của nodejs từ trang web chính thức . Các bản phân phối tôi sử dụng (thường là Ubuntu LTS) có phiên bản quá cũ.
Alex Lokk

Câu trả lời:


805

Tôi gặp vấn đề này với npm v1.1.4(và node v0.6.12), đó là các Ubuntu 12.04phiên bản kho lưu trữ.

Có vẻ như phiên bản đó npmkhông được hỗ trợ nữa, nút cập nhật (và npm với nó) đã giải quyết vấn đề.

Đầu tiên, gỡ cài đặt phiên bản lỗi thời (tùy chọn, nhưng tôi nghĩ rằng vấn đề này đã khắc phục sự cố tôi gặp phải với các mô-đun toàn cầu không được xử lý).

sudo apt-get purge nodejs npm

Sau đó kích hoạt repo của nodeource và cài đặt:

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

Lưu ý - lời khuyên trước đó là sử dụng repo của Chris Lea, giờ đây anh ấy đã chuyển nó sang nút nguồn, xem:

Từ: đây


13
Lưu ý rằng gói nodejs bao gồm npm và nodejs-dev, vì vậy việc cài đặt nodejs từ ppa giúp bạn có mọi thứ cần thiết cho npm.
chawkinsuf

2
Cảm ơn! Điều này làm việc cho tôi! Đây sẽ là câu trả lời được chấp nhận cho "Hỏi Ubuntu" nhưng có vẻ như nhiều người dùng không phải Ubuntu thấy câu trả lời được chấp nhận là hữu ích.
dannyman

2
đã chạy cái này trên raspbery pi và gặp lỗi Phân đoạn khi chạy nodejs hoặc npm
godzilla

5
Sau khi sử dụng các hướng dẫn này và nhận được lỗi Phân đoạn trên raspberry pi (Raspbian), tôi đã gỡ bỏ cổng và làm theo các hướng dẫn này gist.github.com/justinjenkins/16adc15338bb265f6808 bây giờ nó hoạt động!
Justin Jenkins

2
-1 vì đã khuyến nghị rằng những người mới không nghi ngờ sẽ làm điều gì đó không khôn ngoan và không an toàn như mã đường ống từ một nguồn chưa được xác minh trên internet đến vỏ gốc . Vô trách nhiệm hầu như không bao gồm nó. Ít nhất bạn nên có một cảnh báo về sự an toàn nếu không phải là một khuyến nghị để xác minh tổng kiểm tra.
Bọ Cạp

644

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

Tôi đã phải thực hiện lệnh dưới đây:

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

Tuy nhiên, điều đó sẽ khiến npmcác gói cài đặt qua kết nối HTTP không an toàn. Nếu bạn có thể, bạn nên gắn bó với

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

thay vào đó để cài đặt qua HTTPS.


6
Yup, điều này cũng đã làm điều đó cho tôi. Cám ơn vì đã chia sẻ!
Alix Axel

7
Sử dụng một quả mâm xôi pi, và đây là lệnh tôi phải sử dụng. đã thay đổi registry.npmjs.org/pi-gpio thành registry.npmjs.org/pi-gpio . Không chắc chắn những gì xảy ra với https không thể truy cập được bởi pi
Jdaotta 28/12/13

28
Cảnh báo: điều này sẽ kéo các tài nguyên qua / không an toàn / kết nối. Các tập tin của bạn có thể được thay đổi trước khi bạn nhận được chúng. Một lần nữa: điều này không an toàn.
Lodewijk

38
Không sử dụng giải pháp không an toàn này, ngay cả khi nó hoạt động. Phiên bản apt-get của Node.js quá cũ (0.6.12); Tôi đã cài đặt phiên bản ổn định mới nhất từ ​​GitHub và nó đã giải quyết được vấn đề.
Louis Ameline

2
Nó sẽ không hoạt động đối với một số gói nodejs khác. Tôi chỉ đang tải xuống phiên bản mới hơn của node.js từ trang web chính thức và biên dịch nó bằng tay.
Alex Lokk

32

Tôi đang dùng Ubuntu. Tôi đã sử dụng apt-get để cài đặt nút. Npm không được bao gồm trong gói đó, vì vậy nó phải được cài đặt riêng. Tôi cho rằng nó sẽ hoạt động, nhưng rõ ràng phiên bản npm trong bản phân phối Ubuntu đã lỗi thời.

Các wiki nút có hướng dẫn này:

Có được một phiên bản Node gần đây hoặc cài đặt trên Ubuntu cũ và các bản phân phối dựa trên apt khác có thể cần thêm một vài bước. Ví dụ cài đặt:

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

Sau đó, npm đã được đưa vào và hoạt động hoàn hảo.


18

Đối với tôi, đó thường là sự cố proxy và tôi thử mọi cách:

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
Vô hiệu hóa SSL nghiêm ngặt bằng cách sử dụng npm config set strict-ssl falsewroked cho tôi.
Mayura

17

Bạn cũng cần cài đặt các thuộc tính phần mềm phổ biến để add-apt-repository hoạt động. vì vậy nó sẽ được

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
Sau các bước trên, tất cả chúng ta cần làm là: sudo npm install -g karma
vijay

10

Một điều đã làm việc với tôi với các lỗi cài đặt npm ngẫu nhiên (trong đó gói bị lỗi khác nhau trong các thời điểm khác nhau (nhưng cùng một môi trường) là sử dụng điều này:

npm cache clean

Và sau đó lặp lại quá trình. Sau đó, quá trình có vẻ suôn sẻ hơn và vấn đề thực sự và thông báo lỗi sẽ xuất hiện, nơi bạn có thể sửa nó và sau đó tiến hành.

Điều này dựa trên kinh nghiệm chạy cài đặt npm của cả đống gói dưới bản cài đặt Ubuntu khá đơn giản bên trong một phiên bản Docker. Đôi khi, có các công cụ xây dựng / tạo bị thiếu trong Ubuntu và các lỗi npm sẽ không hiển thị vấn đề thực sự cho đến khi bạn xóa bộ nhớ cache vì một số lý do.


Vâng, tôi thấy tôi phải chạy nó, kết hợp với câu trả lời từ đó.
John Powell

7

Vấn đề này là do giao thức https, đó là lý do tại sao giải pháp khác hoạt động (bằng cách chuyển sang giao thức không bảo mật).

Đối với tôi, giải pháp tốt nhất là biên dịch phiên bản nút mới nhất, bao gồm npm

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

6

Hiện tại đã có hướng dẫn chính thức từ joyent (backer nodejs chính). Đối với Ubuntu:

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

Đối với các bản phân phối unix khác, osx và windows xem liên kết. Lưu ý điều này sẽ cài đặt cả nút và npm.


5

Điều duy nhất phù hợp với tôi trên Tiểu học OS Luna, Ubuntu Fork. Tôi đang trên kiến ​​trúc x86. Tôi đã thử tất cả các câu trả lời ở đây nhưng cuối cùng đã quyết định cài đặt nó từ nguồn.

Trước tiên, hãy chắc chắn rằng nó không được cài đặt bằng trình quản lý gói:

sudo apt-get purge nodejs npm -y

Tôi đã đi đến trang tải xuống để tra cứu nguồn mới nhất và tải xuống, http://nodejs.org/doad/ . Bạn có thể sử dụng curl, wget hoặc trình duyệt của bạn để có được nó:

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

Việc thực hiện có thể mất một lúc. Khi hoàn tất, bạn nên cài đặt nút và npm và làm việc trong thư mục / usr / local / bin đã có trên đường dẫn của bạn. Bạn nên xác minh nơi nó sống:

which npm node

Tôi cũng đã phải thay đổi các quyền để làm cho nó hoạt động:

sudo chown -R $USER /usr/local

Nếu nó không hoạt động, hãy kiểm tra đường dẫn của bạn:

echo $PATH

Lưu ý rằng cài đặt theo cách này, nó sẽ không được quản lý bởi gói apt-get. Chúc mừng!


Vui lòng chia sẻ vấn đề là gì thay vì đánh dấu điều này xuống. Nó làm việc cho tôi! :)
radtek

2

Phương pháp dưới đây hiệu quả với tôi, Kudos cho người dùng github: midnightcodr

Đảm bảo Bạn xóa mọi gói nodejs / npm đã được cài đặt.

sudo apt-get purge nodejs

sudo apt-get purge npm

Bây giờ Cài đặt Node js bằng lệnh bên dưới (Nhờ midnightcodr trên github)

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

Lưu ý rằng bạn có thể gọi nút bằng nút lệnh chứ không phải nútj.

Khi nút được cài đặt, Cài đặt npm

sudo apt-get install npm

2

Gần đây tôi gặp vấn đề này sau khi nâng cấp node.js (và chắc chắn là npm) lên phiên bản mới nhất:

> npm --version < 2.0.0-alpha-5

Lưu ý: Tôi không yêu cầu phiên bản không ổn định, tôi chỉ nhận được sau khi dùng brew install npmOSX.

Hạ cấp npm đã khắc phục vấn đề cho tôi.

Cách dễ nhất để cài đặt npm ổn định là npm install -g npmnhưng nó có thể không hoạt động trong một số trường hợp và sau đó có thể cần hạ cấp node.js.


1

Nó có thể là đăng ký npm tại thời điểm đó hoặc kết nối của bạn bị mất.

Dù bằng cách nào bạn cũng nên nâng cấp nút và npm.

Tôi khuyên bạn nên sử dụng nave để quản lý môi trường nút của bạn.

https://npmjs.org/package/nave

Nó cho phép bạn dễ dàng cài đặt các phiên bản và nhanh chóng nhảy giữa chúng.


1

cho mâm xôi pi tôi đã tìm thấy và sửa đổi một giải pháp tôi tìm thấy
ở đây là những gì tôi đã chạy

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

mod duy nhất tôi đã làm là thay đổi tất cả 10,25 thành 10,28, đây là phiên bản linux-arm-pi mới nhất vào thời điểm đó


0

@ có câu trả lời là câu trả lời hay nhất. Tuy nhiên, các phiên bản Node đã di chuyển từ trên xuống dưới và phiên bản trở nên phức tạp bởi sự phục hồi của io.js. Thực hiện theo các bước trong câu trả lời của anh ấy, bạn sẽ kết thúc với phiên bản Node 0.10.25- không phải là phiên bản mới nhất.

Bạn vẫn nên lọc mọi gói nút / npm hiện có với

sudo apt-get purge nodejs npm

và sau đó đi và xem trang cài đặt debource tại https://github.com/nodesource/distribution#debinstall .

Tất cả các phiên bản Node.js được liệt kê trên trang trên với các lệnh Linux để cài đặt chúng. Và các gói này sẽ hoạt động trên cả Debian và Ubuntu .

PS Nếu bạn muốn chạy Node v4.4 trở lên trên Ubuntu Precise hoặc Debian Wheezy, bạn nên xem lại thông tin về việc chạy trên các bản phát hành cũ hơn .

PPS Nếu apt-get của bạn không thành công , tập lệnh sẽ không hoàn thành (các tài liệu tham khảo của Google đã thất bại với tôi apt-get update). Bạn sẽ thấy các thông báo về khóa ký NodeSource được thêm vào khóa của bạn và một thông báo cuối cùng hướng dẫn bạn Run 'apt-get install nodejs' to install Node.js.

PPPS npm được cài đặt với nút. Sau khi cài đặt, bạn có thể cập nhật lên npm mới nhất vớisudo npm install npm -g

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.