npm ERR! код UNABLE_TO_GET_ISSUER_CERT_LOCALLY

Я пытаюсь использовать все способы создания реагирующего приложения. Я пробовал с maven, и теперь я пытаюсь использовать систему сборки crate-react-app из Facebook Incubators.

Когда я попытался запустить команду create-react-app my-app в среде npm, она работала на моей личной системе без проблем. Но когда я попробовал ту же команду в своей рабочей среде, я столкнулся с этой ошибкой в командной строке

npm ERR! node v6.10.2
npm ERR! npm  v3.10.10
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

npm ERR! unable to get local issuer certificate
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

Ответы

Ответ 1

Быстрое решение из поиска в интернете было в npm config set strict-ssl false, к счастью, это сработало. Но, как часть моей рабочей среды, я ограничен, чтобы установить флаг strict-ssl в false.

Позже я нашел безопасное и рабочее решение,

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

это сработало отлично, и я получил сообщение об успехе Happy Hacking! не устанавливая флаг strict-ssl в значение false.

Ответ 2

что может произойти, если ваша компания расшифрует определенный трафик и перекодирует его с помощью своего сертификата (который вы, вероятно, уже имеете в своей цепочке для ключей или доверенных корневых сертификатах)

если вы используете узел 7 или новее, я обнаружил, что это исправление совместимо с node и node-gyp (для Windows вам нужно сделать это по-другому, но вам просто нужно добавить эту переменную среды):

export NODE_EXTRA_CA_CERTS="absolute_path_to_your_certificates.pem"

файл pem может иметь несколько сертификатов: https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file

убедитесь, что ваши сертификаты в правильном формате pem (вам нужны настоящие разрывы строк, а не литералы \n)

Я не могу заставить его работать с относительными путями (. или ~)

Это исправление в основном говорит npm и node-gyp использовать проверку по сравнению с обычными центрами сертификации, но также разрешает этот сертификат при его обнаружении

В идеале вы сможете использовать доверенные сертификаты вашей системы, но, к сожалению, это не так.

Ответ 3

Изменение URL репозитория NPM на HTTP работает как быстрое решение, но я хотел использовать HTTPS.

В моем случае прокси у моего работодателя (ZScaler) вызывал проблемы (поскольку он действует как MITM, вызывая проблемы с проверкой сертификации)

Я забыл, что нашел скрипт, который помогает с этим, и Git (для клонирования репозиториев GitHub через HTTPS возникла та же проблема), и раздвоил его для моего использования

По сути, он делает следующее для git:

git config --global http.proxy http://gateway.zscaler.net:80/
git config --system http.proxy http://gateway.zscaler.net:80/

и для узла он добавляет proxy=http://gateway.zscaler.net:80/ в конец c:\Users\$USERNAME\npm\.npmrc

Это решило проблему для меня.

Ответ 4

Произошла такая же ошибка. Похоже, что это связано с сертификатами SSL. Если вы используете NPM для общедоступных пакетов (не нуждайтесь в безопасности HTTPS), вы можете отключить строгую проверку ключа SSL с помощью следующей команды.

Это может быть самым простым решением, если вы просто хотите установить несколько общедоступных пакетов один раз.

npm config set strict-ssl=false

Ответ 5

Поверьте мне, это будет работать для вас:

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

Ответ 6

Приведенный ниже код работал для меня отлично здесь сделать http только вместо https

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

Ответ 7

У меня была эта ошибка, когда я пытался обновить npm, но в AWS Linux была установлена действительно старая версия (1.3.6!) От yum. Мне удалось вручную установить более новую версию npm, и все было исправлено.