Ошибка SSL: CERT_UNTRUSTED при использовании команды npm

159

Я пытаюсь установить Express Framework с помощью команды npm, но получаю следующую ошибку.

сообщение об ошибке

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

помоги мне разобраться

Sudip7
источник

Ответы:

316

Вы можете обойти https, используя следующие команды:

npm config set strict-ssl false

или установите URL-адрес реестра из https или http, как показано ниже:

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

Однако лично я считаю, что обход https не является реальным решением, но мы можем использовать его в качестве обходного пути.

ramesh.mimit
источник
13
Несколько небезопасное, но хорошее реальное решение.
Бернар Сосье
1
Можно ли удалить опцию обхода, как только мы использовали команду выше? Если да, как мы можем удалить опцию обхода?
rash111
1
@ rash111 Я предполагаю, что установка его в true должна работать:npm config set strict-ssl true
Gromer
10
"Хорошее решение для реального мира" ... Это совсем не приятно, если только вам не нравится, когда вас взламывают.
trusktr
Спасибо! Это также необходимо при использовании npm в виртуальной машине VirtualBox под управлением Ubuntu 14.04. Это единственный способ исправить ошибку CERT, это происходит даже тогда, когда реестр настроен по "http://registry.npmjs.org/"умолчанию.
Прахлад Ери
53
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32

Обновите ваш файл node.js. Следующие команды должны сделать это ( отсюда ):

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

Изменить: хорошо, если у вас действительно есть веская причина для запуска древней версии программного обеспечения, npm set ca nullпроблема будет решена. Это произошло потому, что срок действия встроенного сертификата npm истек.

Алекс
источник
3
Я сейчас использую две вышеуказанные версии, в чем ваша точка зрения, я не смог понять
Sudip7
1
Я хочу сказать, что эти версии являются древними, а срок действия встроенных сертификатов npm у них уже истек. Если вы установите последние версии, они будут работать.
Алекс
1
Я попытался установить последнюю версию и получил некоторые проблемы во время установки. Кто-то из SO предложил мне установить вышеуказанную версию, она была установлена ​​правильно, но теперь npm не работает. Я даю вам ссылку на мой предыдущий вопрос stackoverflow.com/questions/21850871/…
Sudip7
24
Я обнаружил, что запуск sudo npm cache clean -fзатем sudo npm install -g nвыдает ошибку CERT_UNTRUSTED после второй команды.
Fuzzi
2
Согласно ссылочной ссылке: «Этот метод обновления узла теперь нестабилен и не должен использоваться. Лучший способ управлять версиями Node.js - это использовать NVM: Node Version Management.
Чус
22

У меня была такая же проблема, и, наконец, я понял, что моя версия узла старая. Например, вы можете установить текущую версию активного узла LTS в Ubuntu, выполнив следующие действия:

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

Инструкции по установке для других версий и систем можно найти по следующей ссылке:

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

majran
источник
Работал над Ubuntu 14.
Vignesh Chinnaiyan
9

Я думаю, что я получил причину вышеуказанной ошибки. Это корпоративный прокси (виртуальная частная сеть), предоставляемый для работы в клиентской сети. Без этого соединения я часто сталкивался с одной и той же проблемой, будь то сборка maven или установка npm.

Sudip7
источник
5

Если вы используете корпоративный прокси, попробуйте этот параметр для npm с прокси вашей компании:

npm --https-proxy=http://proxy.company.com install express -g
Майкл Оукли
источник
3
Если вы работаете в большой организации, между вами и Интернетом обычно есть прокси-сервер. Иногда это вызывает эту проблему. (Это для меня) Один из возможных тестов для этого - отключить компьютер от сети и установить npm install express из дома.
Майкл Оукли
2

Так как я наткнулся на пост через Google:

Попробуйте использовать npm ciэто будет намного больше, чем npm install.

Из руководства:

Короче говоря, основные различия между использованием npm install и npm ci:

  • Проект должен иметь существующий пакет-lock.json или npm-shrinkwrap.json.
  • Если зависимости в блокировке пакета не совпадают с зависимостями в package.json, npm ci выйдет с ошибкой вместо обновления блокировки пакета.
  • npm ci может устанавливать только целые проекты за раз: с помощью этой команды нельзя добавить отдельные зависимости.
  • Если node_modules уже присутствует, он будет автоматически удален до того, как npm ci начнет его установку.
  • Он никогда не будет писать в package.json или любой из блокировок пакетов: установки по сути заморожены.
HerrWalter
источник
1

Переустановите узел, затем обновите npm.

Сначала я удалил узел

apt-get purge node

Затем установите узел в соответствии с распределением. Документы здесь .

затем

npm install npm@latest -g
jplattus
источник