NPM error "failed to fetch from registry" khi install module

Khi sử dụng NPM để install 1 module cho 1 project, bạn có thể gặp 1 lỗi rất bực mình như thế này:

$ npm install express --save
npm http GET https://registry.npmjs.org/express

npm ERR! Error: failed to fetch from registry: express  
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!     <[email protected]>  
npm ERR!  
npm ERR! System Linux 2.6.18-194.el5  
npm ERR! command "node" "/opt/node0610/bin/npm" "install" "express"  
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: express  
npm ERR!  
npm ERR! Additional logging details can be found in:  
npm ERR!     /opt/node0610/lib/node_modules/npm-debug.log  
npm not ok  

Dưới đây là 1 vài cách để sửa lỗi:

Phiên bản npm cũ

Như bạn thấy từ lỗi ở trên, phiên bản npm đang được sử dụng đã cũ. Trong ví dụ này, chúng ta đang sử dụng Node v0.6.10 và npm v1.1.0-3. Phiên bản này được biết là có vài vấn đề với Ubuntu 12.04, vậy bạn đành phải đánh cược vào cách update Node (và npm) lên phiên bản mới nhất:

$ sudo npm update npm -g

Nếu bạn muốn install lại toàn bộ, đầu tiên bạn phải remove tất cả Node/npm hiện tại:

$ sudo apt-get purge nodejs npm

Sau đó, install lại từ các nguồn mới hơn, như là từ Nodesource:

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

Hoặc bạn có thể đọc bài này để tìm hiểu các cách cài đặt chi tiết hơn cho Node.js trên Ubuntu.

Không thể Download qua HTTPS

Vì 1 hoặc nhiều lí do nào đó, vài người không thể kết nối đến registry thông qua HTTPS. Lỗi này có thể được fix khi config lại settting registry để sử dụng HTTP thay cho HTTPS:

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

Cách này không được khuyến khích làm, vì các packages của bạn sau đó sẽ được download về không an toàn. Tốt nhất là nên tìm nguyên nhân gốc rễ thay vì cách sửa này.

Corporate Proxy

Hầu hết với tất cả mọi người, nguyên nhân thật sự là do proxy sử dụng trên mạng của họ. Trong trường hợp này, bạn có thể sử dụng các lệnh dưới đây để set HTTP và HTTPS proxies:

$ npm config set proxy http://user:[email protected]:8181
$ npm config set https-proxy http://user:[email protected]:8181

Nó sẽ lưu config mới và cho phép bạn truy cập internet với npm.

http://stackabuse.com/npm-error-failed-to-fetch-from-registry-when-installing-module/ Scott Robinson