Я сталкиваюсь с ошибкой сертификата при попытке установить пакеты NPM в Windows. Я использую Node v10.9.0

npm ERR! код ERR_TLS_CERT_ALTNAME_INVALID
npm ERR! errno ERR_TLS_CERT_ALTNAME_INVALID
npm ERR! запрос на https://registry.npmjs.org/http-server не удалось, причина: имя хоста /IP не соответствует именам сертификатов: Host: registry.npmjs.org. не находится в именах cert: DNS: a.sni.fastly.net, DNS: a.sni.global-ssl.fastly.net

Ответ 1

Похоже, что это настоящая проблема на серверах NPM. Я вижу ту же ошибку при навигации по https://registry.npmjs.org/http-server в браузере. У сервера действительно нет действительного сертификата. Ничего особенного в Windows.

NPM сообщает о проблеме с некорректной кешировкой DNS-данных: https://status.npmjs.org/incidents/v22ffls5cd6h

Пока тайник не очистится, они предлагают сделать следующее:

  1. dig registry.npmjs.com @1.1.1.1
  2. Добавьте IP-адрес в файл /etc/hosts.

Обновление: Немного несвязано, для тех, кто использует yarn. Яркое зеркало реестра NPM, похоже, тоже затронуто этой проблемой, поэтому кажется, что на данный момент все, что мы можем сделать, - это подождать, пока проблема не будет решена, или команда "Пряжа" применит обходной путь на сервере.

Ответ 2

Официально предложенное решение с добавлением IP-адресов, найденных с помощью команды dig в файл hosts, каким-то образом не сработало для меня.

Я обнаружил, что для npm существует опция конфигурации strict-ssl.

Создание файла.npmrc в моей папке проекта с помощью strict-ssl = false решило проблему.

Я считаю это решение более безопасным и более изолированным, так как редактирование файла hosts может оказаться невозможным для всех и когда оно есть, это приведет к тому, что каждый запрос, сделанный с вашего компьютера, будет перенаправлен на определенный IP-адрес.

Я планирую удалить этот файл, когда исправлена эта временная проблема.