web-dev-qa-db-fra.com

npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

J'essaie tous les moyens de créer une application de réaction. J'ai essayé avec maven et maintenant j'essaie avec le système de construction de caisse-réaction-application des incubateurs de Facebook.

Lorsque j'ai essayé d'exécuter la commande create-react-app my-app dans un environnement npm, cela a fonctionné sur mon système personnel sans aucun problème. Mais quand j'ai essayé la même commande dans mon environnement de travail, j'ai rencontré cette erreur lors d'une invite de commande

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>
62
Dinesh

Une solution rapide de la recherche sur Internet était npm config set strict-ssl false, heureusement, cela a fonctionné. Mais dans le cadre de mon environnement de travail, je suis limité à définir le drapeau strict-ssl sur false.

Plus tard, j'ai trouvé une solution sûre et efficace,

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

cela fonctionnait parfaitement et j'ai reçu un message de succès Happy Hacking! en ne définissant pas l'indicateur strict-ssl sur false.

180
Dinesh

ce qui est susceptible de se produire est que votre travail décrypte un certain trafic et le recrypte avec son certificat (que vous avez probablement déjà dans votre trousseau ou vos certificats racine de confiance)

si vous utilisez le nœud 7 ou une version ultérieure, j'ai trouvé que ce correctif était compatible avec nœud et nœud-gyp (pour Windows, vous devrez procéder différemment, mais vous aurez simplement besoin d'ajouter cette variable d'environnement):

export NODE_EXTRA_CA_CERTS="absolute_path_to_your_certificates.pem"

le fichier pem peut avoir plusieurs certificats: https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file

assurez-vous que vos certificats sont au format pem approprié (vous avez besoin de sauts de ligne réels et non littéraux \n)

Je n'arrivais pas à le faire fonctionner avec les chemins . ou ~

Ce correctif indique en gros à npm et à node-gyp d'utiliser la vérification par rapport aux autorités de certification classiques, mais également d'autoriser ce certificat lorsqu'il le détecte.

Idéalement, vous pourrez utiliser les certificats de confiance de votre système, mais malheureusement, ce n'est pas le cas.

9
Jordan

Changer l'URL du dépôt NPM en HTTP fonctionne comme une solution rapide, mais je voulais utiliser HTTPS.

Dans mon cas, le proxy de mon employeur (ZScaler) posait problème (il agit comme un MITM et provoque des problèmes de vérification de la certification).

J'ai oublié que je j'ai trouvé un script qui aide à résoudre ce problème et que Git (pour le clonage du dépôt GitHub via HTTPS présentait le même problème) et le fourchissait pour mon usage

En gros, cela fait pour git:

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

et pour Node, il ajoute proxy=http://gateway.zscaler.net:80/ à la fin de c:\Users\$USERNAME\npm\.npmrc

Cela a résolu le problème pour moi.

4
Robert Dundon

Eu la même erreur. On dirait que c'est lié aux certificats SSL. Si vous utilisez NPM pour des packages publics (vous n'avez pas besoin de la sécurité de HTTPS), vous pouvez désactiver la validation stricte des clés SSL à l'aide de la commande suivante.

Cela pourrait être la solution la plus simple si vous ne souhaitez installer que quelques paquets accessibles au public une fois.

npm config set strict-ssl=false
3
Jason Geiger

Le code ci-dessous a parfaitement fonctionné pour moi ici. Http uniquement à la place https

npm config set registry http://registry.npmjs.org/  
2
Mohd Shariq

Croyez-moi, cela fonctionnera pour vous:

    npm config set registry http://registry.npmjs.org/  
1
Prashanth Keshanna