Lỗi SSL: CERT_UNTRUSTED trong khi sử dụng lệnh npm


159

Tôi đang cố gắng cài đặt express framework bằng lệnh npm nhưng gặp lỗi sau.

thông báo lỗi là

E:\myFindings\nodejs_programs\node>npm install -g express
npm http GET https://registry.npmjs.org/express
npm ERR! Error: SSL Error: CERT_UNTRUSTED
npm ERR!     at ClientRequest.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\request\main.js:409:26)
npm ERR!     at ClientRequest.g (events.js:185:14)
npm ERR!     at ClientRequest.EventEmitter.emit (events.js:88:17)
npm ERR!     at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1445:7)
npm ERR!     at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23)
npm ERR!     at CleartextStream.socketOnData [as ondata] (http.js:1356:20)
npm ERR!     at CleartextStream.CryptoStream._push (tls.js:396:27)
npm ERR!     at SecurePair.cycle (tls.js:751:20)
npm ERR!     at EncryptedStream.CryptoStream.write (tls.js:131:13)
npm ERR!     at Socket.ondata (stream.js:38:26)
npm ERR!  [Error: SSL Error: CERT_UNTRUSTED]
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! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "express"
npm ERR! cwd E:\myFindings\nodejs_programs\node
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32
npm ERR! message SSL Error: CERT_UNTRUSTED
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     E:\myFindings\nodejs_programs\node\npm-debug.log
npm ERR! not ok code 0

giúp tôi sắp xếp

Câu trả lời:


316

Bạn có thể bỏ qua https bằng các lệnh bên dưới:

npm config set strict-ssl false

hoặc đặt URL đăng ký từ https hoặc http như bên dưới:

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

Tuy nhiên, cá nhân tôi tin rằng bỏ qua https không phải là giải pháp thực sự, nhưng chúng ta có thể sử dụng nó như một cách giải quyết.


13
Hơi không an toàn, nhưng giải pháp thế giới thực tốt đẹp.
Bernard Saucier

1
Có thể loại bỏ tùy chọn bỏ qua một khi chúng tôi sử dụng lệnh trên. Nếu có, làm thế nào chúng ta có thể loại bỏ tùy chọn bỏ qua?
rash111

1
@ rash111 Tôi giả sử cài đặt nó thành đúng sẽ hoạt động:npm config set strict-ssl true
Gromer

10
"Giải pháp thế giới thực tốt đẹp" ... Điều này không tốt chút nào, trừ khi bạn thích bị hack.
trusktr

Cảm ơn! Điều này cũng cần thiết khi sử dụng npm trong VirtualBox VM chạy Ubuntu 14.04. Đây là cách duy nhất để khắc phục lỗi CERT, nó xuất hiện ngay cả khi sổ đăng ký được cấu hình "http://registry.npmjs.org/"là mặc định.
Prahlad Yeri

53
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32

Cập nhật cài đặt node.js của bạn. Các lệnh sau sẽ thực hiện (từ đây ):

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

Chỉnh sửa: được, nếu bạn thực sự có lý do chính đáng để chạy phiên bản cũ của phần mềm, npm set ca nullsẽ khắc phục sự cố. Nó đã xảy ra, bởi vì chứng chỉ npm tích hợp đã hết hạn trong những năm qua.


3
Tôi hiện đang sử dụng hai phiên bản trên, quan điểm của bạn là gì, tôi không thể hiểu được
Sudip7

1
Quan điểm của tôi là: những phiên bản đó là cổ xưa và các chứng chỉ npm tích hợp trong đó đều đã hết hạn. Nếu bạn cài đặt các phiên bản gần đây, chúng sẽ hoạt động.
alex

1
Tôi đã cố gắng cài đặt phiên bản mới nhất và gặp một số vấn đề trong quá trình cài đặt. Một người nào đó trong SO đề nghị tôi cài đặt phiên bản trên, nó đã được cài đặt đúng, nhưng bây giờ npm không hoạt động. Tôi đang cung cấp cho bạn liên kết đến stackoverflow
tôi.com/questions/21850871/ Kẻ

24
Tôi thấy rằng việc chạy sudo npm cache clean -fsau đó sudo npm install -g nđưa ra lỗi CERT_UNTRUSTED sau lệnh thứ hai.
fuzzi

2
Theo liên kết được tham chiếu: "Phương pháp nâng cấp nút này hiện không ổn định và không nên được sử dụng. Cách tốt nhất để quản lý các phiên bản Node.js là sử dụng NVM: Quản lý phiên bản nút. !"
chus 17/12/18

22

Tôi đã có cùng một vấn đề và cuối cùng tôi hiểu rằng phiên bản nút của tôi đã cũ. Ví dụ: bạn có thể cài đặt phiên bản nút LTS hoạt động hiện tại trong Ubuntu theo các bước sau:

sudo apt-get update
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install nodejs -y

Hướng dẫn cài đặt cho nhiều phiên bản và hệ thống có thể được tìm thấy trong liên kết sau:

https://github.com/nodesource/distribution/blob/master/README.md


Đã làm việc trên Ubuntu 14.
Vignesh Chinnaiyan

9

Tôi nghĩ rằng tôi đã có lý do cho lỗi trên. Nó là proxy công ty (mạng riêng ảo) được cung cấp để hoạt động trong mạng máy khách. Không có kết nối đó, tôi thường xuyên phải đối mặt với cùng một vấn đề là cài đặt maven build hoặc npm.


5

Nếu bạn đứng sau proxy công ty, hãy thử cài đặt này trong npm với proxy của công ty bạn:

npm --https-proxy=http://proxy.company.com install express -g

3
Nếu bạn làm việc trong một tổ chức lớn, việc có một máy chủ proxy giữa bạn và internet là điều phổ biến. Đôi khi nó gây ra vấn đề này. (Nó đã làm cho tôi) Một thử nghiệm khả thi cho việc này sẽ là tắt máy tính khỏi mạng và cài đặt npm express từ nhà.
Michael Oakley

2

Kể từ khi tôi tình cờ thấy bài viết qua google:

Hãy thử sử dụng npm cinó sẽ nhiều hơn một npm install.

Từ hướng dẫn:

Nói tóm lại, sự khác biệt chính giữa việc sử dụng cài đặt npm và npm ci là:

  • Dự án phải có gói-lock.json hoặc npm-shrwrap.json hiện có.
  • Nếu các phụ thuộc trong khóa gói không khớp với các gói trong gói.json, npm ci sẽ thoát với một lỗi, thay vì cập nhật khóa gói.
  • npm ci chỉ có thể cài đặt toàn bộ dự án tại một thời điểm: các phụ thuộc riêng lẻ có thể được thêm bằng lệnh này.
  • Nếu một nút_modules đã có sẵn, nó sẽ tự động bị xóa trước khi npm ci bắt đầu cài đặt.
  • Nó sẽ không bao giờ ghi vào pack.json hoặc bất kỳ khóa-gói nào: các bản cài đặt về cơ bản bị đóng băng.

1

Cài đặt lại nút, sau đó cập nhật npm.

Đầu tiên tôi loại bỏ nút

apt-get purge node

Sau đó cài đặt nút theo phân phối. Tài liệu ở đây .

Sau đó

npm install npm@latest -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.