Kesalahan SSL: CERT_UNTRUSTED saat menggunakan perintah npm

159

Saya mencoba menginstal framework express menggunakan perintah npm tetapi mendapatkan error berikut.

pesan kesalahan adalah

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

bantu saya memilah

Sudip7
sumber

Jawaban:

316

Anda dapat melewati https menggunakan perintah di bawah ini:

npm config set strict-ssl false

atau atur URL registri dari https atau http seperti di bawah ini:

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

Namun, secara pribadi saya percaya mem-bypass https bukanlah solusi yang sebenarnya, tetapi kita dapat menggunakannya sebagai solusi.

ramesh.mimit
sumber
13
Agak tidak aman, tapi solusi dunia nyata yang bagus.
Bernard Saucier
1
Apakah mungkin untuk menghapus opsi bypass setelah kami menggunakan perintah di atas. Jika ya bagaimana kita bisa menghapus opsi bypass?
rash111
1
@ rash111 Saya menganggap pengaturan ini benar harus berfungsi:npm config set strict-ssl true
Gromer
10
"solusi dunia nyata yang bagus" ... Ini tidak bagus sama sekali, kecuali jika Anda suka diretas.
trusktr
Terima kasih! Ini juga diperlukan saat menggunakan npm di VM VirtualBox yang menjalankan Ubuntu 14.04. Ini adalah satu-satunya cara untuk memperbaiki kesalahan CERT, ia datang bahkan ketika registri dikonfigurasi "http://registry.npmjs.org/"yang merupakan default.
Prahlad Yeri
53
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32

Perbarui instalasi node.js Anda. Perintah berikut harus melakukannya (dari sini ):

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

Sunting: oke, jika Anda benar - benar memiliki alasan yang baik untuk menjalankan versi kuno perangkat lunak, npm set ca nullakan menyelesaikan masalah. Itu terjadi, karena sertifikat npm bawaan telah kedaluwarsa selama bertahun-tahun.

alex
sumber
3
Saat ini saya menggunakan dua versi di atas, apa gunanya Anda, saya tidak bisa mengerti
Sudip7
1
Maksud saya adalah: versi-versi itu kuno, dan sertifikat npm bawaan di semua sudah kedaluwarsa. Jika Anda menginstal versi terbaru, mereka akan berfungsi.
alex
1
Saya mencoba menginstal versi terbaru dan mendapat masalah saat instalasi. Seseorang di SO menyarankan saya untuk menginstal versi di atas, itu diinstal dengan benar, tetapi sekarang npm tidak berfungsi. Saya memberi Anda tautan ke pertanyaan saya sebelumnya stackoverflow.com/questions/21850871/…
Sudip7
24
Saya menemukan bahwa menjalankan sudo npm cache clean -fkemudian sudo npm install -g nmemberikan kesalahan CERT_UNTRUSTED setelah perintah kedua.
fuzzi
2
Menurut tautan yang dirujuk: "Metode peningkatan node ini sekarang tidak stabil dan tidak boleh digunakan. Cara terbaik untuk mengelola versi Node.js adalah menggunakan NVM: Manajemen Versi Node. !"
chus
22

Saya memiliki masalah yang sama dan akhirnya saya mengerti bahwa versi node saya sudah tua. Misalnya, Anda dapat menginstal versi simpul LTS aktif saat ini di Ubuntu dengan langkah-langkah berikut:

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

Petunjuk instalasi untuk lebih banyak versi dan sistem dapat ditemukan di tautan berikut:

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

majran
sumber
Bekerja di Ubuntu 14.
Vignesh Chinnaiyan
9

Saya pikir saya punya alasan untuk kesalahan di atas. Ini adalah proksi perusahaan (jaringan pribadi virtual) yang disediakan untuk bekerja di jaringan klien. Tanpa koneksi itu saya sering menghadapi masalah yang sama baik itu maven build atau npm install.

Sudip7
sumber
5

Jika Anda berada di belakang proxy perusahaan, coba pengaturan ini untuk npm dengan proxy perusahaan Anda:

npm --https-proxy=http://proxy.company.com install express -g
Michael Oakley
sumber
3
Jika Anda bekerja di organisasi besar, biasanya memiliki server proxy antara Anda dan internet. Terkadang hal ini menyebabkan masalah ini. (Itu berhasil bagi saya) Salah satu tes yang mungkin untuk ini adalah untuk mengambil komputer dari jaringan dan menginstal npm express dari rumah.
Michael Oakley
2

Karena saya sengaja menemukan posting via google:

Coba gunakan npm ciitu akan lebih dari satu npm install.

Dari manual:

Singkatnya, perbedaan utama antara menggunakan npm install dan npm ci adalah:

  • Proyek harus memiliki package-lock.json atau npm-shrinkwrap.json.
  • Jika dependensi dalam kunci paket tidak cocok dengan yang ada di package.json, npm ci akan keluar dengan kesalahan, alih-alih memperbarui kunci paket.
  • npm ci hanya dapat menginstal seluruh proyek sekaligus: dependensi individual tidak dapat ditambahkan dengan perintah ini.
  • Jika node_modules sudah ada, maka akan dihapus secara otomatis sebelum npm ci mulai menginstalnya.
  • Itu tidak akan pernah menulis ke package.json atau salah satu dari kunci-paket: instalasi pada dasarnya beku.
HerrWalter
sumber
1

Instal ulang node, lalu perbarui npm.

Pertama saya menghapus simpul

apt-get purge node

Kemudian instal simpul sesuai dengan distibution. Dokumen di sini .

Kemudian

npm install npm@latest -g
jplattus
sumber