“ ข้อความล้มเหลวในการดึงข้อมูลจากรีจิสทรี” ในขณะที่พยายามติดตั้งโมดูลใด ๆ


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
johny ขอบคุณสำหรับความคิดเห็นของคุณจริง ๆ แล้วถ้าฉันจำเป็นต้องอัปเดต npm ฉันควรอัปเดต nodejs ด้วยเช่นกัน
Dexter

1
คุณไม่จำเป็นต้องอัพเดต nodejs ด้วย แต่ฉันอยากจะแนะนำถ้าคุณไม่ได้เชื่อมโยงกับเวอร์ชั่น 6.x ด้วยเหตุผลบางอย่าง
JohnnyHK

HTTP ใช้งานได้; HTTPS ไม่ได้เนื่องจาก registry.npmjs.org ไม่ฟัง HTTPS
Mark

1
ฉันมักจะดาวน์โหลดและรวบรวมรุ่นล่าสุดของ nodejs จากเว็บไซต์อย่างเป็นทางการ ดิสทริบิวชันที่ฉันใช้ (ปกติแล้ว Ubuntu LTS) จะมีเวอร์ชั่นเก่าเกินไป
Alex Lokk

คำตอบ:


805

ฉันมีปัญหากับnpm v1.1.4(และnode v0.6.12) ซึ่งเป็นUbuntu 12.04เวอร์ชันของที่เก็บ

ดูเหมือนว่ารุ่นดังnpmกล่าวจะไม่ได้รับการสนับสนุนอีกต่อไปการอัปเดตโหนด (และ npm ด้วย) เพื่อแก้ไขปัญหา

ก่อนอื่นให้ถอนการติดตั้งรุ่นที่ล้าสมัย (เป็นทางเลือก แต่ฉันคิดว่านี่เป็นการแก้ไขปัญหาที่ฉันเกิดขึ้นกับโมดูลทั่วโลกที่ไม่ได้รับการแก้ไข)

sudo apt-get purge nodejs npm

จากนั้นเปิดใช้ repo ของ nodesource และติดตั้ง:

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

หมายเหตุ - คำแนะนำก่อนหน้านี้คือการใช้ repo ของ Chris Lea ตอนนี้เขาได้ย้ายข้อมูลไปยัง nodesource แล้วดู:

จาก: ที่นี่


13
โปรดทราบว่าแพ็คเกจ nodejs ประกอบด้วย npm และ nodejs-dev ดังนั้นการติดตั้ง nodejs จาก ppa ทำให้คุณได้รับทุกอย่างที่จำเป็นสำหรับ npm
chawkinsuf

2
ขอบคุณ! สิ่งนี้ได้ผลสำหรับฉัน! นี่จะเป็นคำตอบที่ได้รับการยอมรับสำหรับ "ถามอูบุนตู" แต่ดูเหมือนว่าผู้ใช้ที่ไม่ใช่อูบุนตูจำนวนมากจะพบคำตอบที่ได้รับการยอมรับว่ามีประโยชน์
dannyman

2
วิ่งนี้ raspbery ปี่และมีความผิดส่วนเมื่อใช้ nodejs หรือ NPM
Godzilla

5
หลังจากใช้คำแนะนำเหล่านี้และรับข้อผิดพลาดในการแบ่งเซ็กเมนต์ใน raspberry 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
ใช้ raspberry pi และนี่เป็นคำสั่งเดียวกับที่ฉันต้องใช้ เปลี่ยนแปลงregistry.npmjs.org/pi-gpioเพื่อregistry.npmjs.org/pi-gpio ไม่แน่ใจว่าจะเกิดอะไรขึ้นกับ https ที่ไม่สามารถเข้าถึงได้โดย pi
Jdahern

28
คำเตือน: สิ่งนี้ดึงทรัพยากรเข้ามาใน / ไม่ปลอดภัย / การเชื่อมต่อ ไฟล์ของคุณอาจมีการเปลี่ยนแปลงก่อนที่จะได้รับพวกเขา อีกครั้ง: สิ่งนี้ไม่ปลอดภัย
Lodewijk

38
อย่าใช้โซลูชันที่ไม่ปลอดภัยนี้แม้ว่าจะได้ผลก็ตาม รุ่น apt-get ของ Node.js นั้นเก่าเกินไป (0.6.12); ฉันติดตั้งรุ่นเสถียรล่าสุดจาก GitHub และแก้ไขปัญหา
Louis Ameline

2
ไม่สามารถใช้ได้สำหรับแพ็คเกจ nodejs อื่น ๆ ฉันแค่ดาวน์โหลด node.js เวอร์ชั่นใหม่จากเว็บไซต์ทางการแล้วคอมไพล์ด้วยมือ
Alex Lokk

32

ฉันใช้ Ubuntu ฉันใช้ apt-get เพื่อติดตั้งโหนด Npm ไม่รวมอยู่ในแพ็คเกจดังกล่าวดังนั้นจึงต้องติดตั้งแยกต่างหาก ฉันคิดว่ามันจะใช้งานได้ แต่เห็นได้ชัดว่าเวอร์ชัน npm ในการแจกจ่าย Ubuntu นั้นล้าสมัย

โหนด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
ปิดใช้งาน 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

3
หลังจากขั้นตอนข้างต้นเราทุกคนต้องทำคือ: sudo npm install -g karma
vijay

10

สิ่งหนึ่งที่ทำงานกับฉันด้วยข้อผิดพลาดในการติดตั้ง npm แบบสุ่ม (ซึ่งแพ็คเกจที่ข้อผิดพลาดแตกต่างกันภายใต้เวลาที่ต่างกัน (แต่สภาพแวดล้อมเดียวกัน) คือการใช้สิ่งนี้:

npm cache clean

จากนั้นทำซ้ำกระบวนการ จากนั้นกระบวนการดูเหมือนจะราบรื่นขึ้นและปัญหาที่แท้จริงและข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นซึ่งคุณสามารถแก้ไขได้และดำเนินการต่อ

สิ่งนี้ขึ้นอยู่กับประสบการณ์ของการใช้งานการติดตั้ง npm ของแพ็คเกจทั้งหมดภายใต้การติดตั้ง Ubuntu ที่สวยภายในตัวเชื่อมต่อ Docker บางครั้งมีเครื่องมือสร้าง / ทำหายไปจาก Ubuntu และข้อผิดพลาด npm จะไม่แสดงปัญหาจริงจนกว่าคุณจะล้างแคชด้วยเหตุผลบางอย่าง


ใช่ฉันพบว่าฉันต้องเรียกใช้สิ่งนี้ร่วมกับคำตอบจากที่นั่น
John Powell

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 (โหนดหลัก backjs 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 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 package manager ไชโย!


โปรดแบ่งปันสิ่งที่เป็นปัญหาแทนการทำเครื่องหมายลง มันใช้งานได้สำหรับฉัน! :)
radtek

2

วิธีการด้านล่างใช้งานได้สำหรับฉัน Kudos ถึงผู้ใช้ GitHub: midnightcodr

ตรวจสอบให้แน่ใจว่าคุณลบแพ็คเกจ nodejs / npm ที่ติดตั้งไว้แล้ว

sudo apt-get purge nodejs

sudo apt-get purge npm

ตอนนี้ติดตั้งโหนด 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 npmบน OSX

การลดระดับ npm ได้แก้ไขปัญหาให้ฉันแล้ว

วิธีที่ง่ายที่สุดในการติดตั้งเสถียร npm คือnpm install -g npmแต่มันอาจไม่ทำงานในบางสถานการณ์และอาจจำเป็นต้องปรับลดรุ่นของ node.js


1

อาจเป็นไปได้ว่ารีจิสทรี npm หยุดทำงานในเวลานั้นหรือการเชื่อมต่อของคุณลดลง

คุณควรอัพเกรดโหนดและ npm ด้วยวิธีใดวิธีหนึ่ง

ฉันอยากจะแนะนำให้ใช้naveเพื่อจัดการสภาพแวดล้อมโหนดของคุณ

https://npmjs.org/package/nave

มันช่วยให้คุณติดตั้งเวอร์ชันได้ง่ายและข้ามไปมาอย่างรวดเร็ว


1

สำหรับราสเบอร์รี่ 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

mod เดียวที่ฉันทำคือเปลี่ยน 10.25 เป็น 10.28 ซึ่งเป็น linux-arm-pi ล่าสุดในเวลานั้น


0

@ therehere คำตอบคือคำตอบที่ดีที่สุด อย่างไรก็ตามเวอร์ชันโหนดได้ย้ายไปเรื่อย ๆ ขึ้นไปและการกำหนดเวอร์ชันนั้นซับซ้อนโดย remerge ของ io.js ทำตามขั้นตอนในคำตอบของเขาคุณจะจบลงด้วยรุ่นโหนด0.10.25- ไม่ใช่รุ่นล่าสุด

คุณควรกำจัดแพ็กเกจโหนด / npm ที่มีอยู่ด้วย

sudo apt-get purge nodejs npm

และจากนั้นไปและดูที่nodesource debติดตั้งหน้าhttps://github.com/nodesource/distributions#debinstall

Node.js ทุกรุ่นแสดงอยู่ในหน้าด้านบนพร้อมกับคำสั่ง Linux เพื่อติดตั้ง และแพคเกจเหล่านี้จะทำงานบนทั้ง Debian และ Ubuntu

PS ถ้าคุณต้องการที่จะเรียกใช้โหนด v4.4 หรือสูงกว่าบน Ubuntu แม่นยำหรือ Debian ดังเสียงฮืด ๆ คุณควรตรวจสอบข้อมูลเกี่ยวกับการทำงานบน distros

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.