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, и все было исправлено.