L’installation de npm ne fonctionne pas lors de l’exécution de npm install cordova

J’utilise Ionic Framework pour créer des applications hybrides. Selon le site officiel, je dois obtenir la version 4.2.4 de Node.js, qui inclut le gestionnaire de paquets npm. Une des dépendances nécessaires à Ionic est cordova afin que je lance la commande suivante pour l’obtenir

C:\Users\ferrero>npm install -g cordova 

Ensuite, la console enregistre

 npm info it worked if it ends with ok npm verb cli [ 'C:\\Program Files\\nodejs\\node.exe', npm verb cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', npm verb cli 'prefix', npm verb cli '-g' ] npm info using [email protected] npm info using [email protected] npm verb exit [ 0, true ] npm info ok npm info it worked if it ends with ok npm verb cli [ 'C:\\Program Files\\nodejs\\node.exe', npm verb cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm- cli.js', npm verb cli 'install', npm verb cli 'cordova' ] npm info using [email protected] npm info using [email protected] npm verb config Skipping project config: C:\Users\ferrero/.npmrc. (matches userconfig) npm verb install initial load of C:\Users\ferrero\package.json npm verb readDependencies loading dependencies from C:\Users\ferrero\package.json npm verb cache add spec cordova npm verb addNamed "latest" is being treated as a dist-tag for cordova npm info addNameTag [ 'cordova', 'latest' ] npm verb addNameTag registry:https://registry.npmjs.org/cordova not in flight; fetching npm verb request uri https://registry.npmjs.org/cordova npm verb request no auth needed npm info attempt registry request try #1 at 16:47:06 npm verb request id 62f85abc5c5b7cd5 npm verb etag "6KQ69KRX02Y8MUJFT56H9DE6N" npm http request GET https://registry.npmjs.org/cordova npm info retry will retry, error on last attempt: Error: self signed certificatee in certificatee chain 

Comme vous pouvez le voir dans le journal, npm exécute la version 2.14.12 et se plaint que ce soit à cause d’un certificate auto-signé – probablement émis par https://registry.npmjs.org/cordova . Donc, pour surmonter ce problème, je lance

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

Et après cela (juste la partie pertinente)

 C:\Users\ferrero>npm install -g cordova npm verb cache add spec cordova npm verb addNamed "latest" is being treated as a dist-tag for cordova npm info addNameTag [ 'cordova', 'latest' ] npm verb addNameTag registry:http://registry.npmjs.org/cordova not in flight; fetching npm verb request uri http://registry.npmjs.org/cordova npm verb request no auth needed npm info attempt registry request try #1 at 16:59:34 npm verb request id 359f93cb3aa8b76e npm verb etag "6KQ69KRX02Y8MUJFT56H9DE6N" npm http request GET http://registry.npmjs.org/cordova npm http 304 http://registry.npmjs.org/cordova npm verb headers { date: 'Tue, 26 Jan 2016 18:59:34 GMT', npm verb headers via: '1.1 varnish', npm verb headers 'cache-control': 'max-age=300', npm verb headers etag: '"6KQ69KRX02Y8MUJFT56H9DE6N"', npm verb headers age: '263', npm verb headers connection: 'keep-alive', npm verb headers 'x-served-by': 'cache-atl6230-ATL', npm verb headers 'x-cache': 'HIT', npm verb headers 'x-cache-hits': '1', npm verb headers 'x-timer': 'S1453834774.362657,VS0,VE1', npm verb headers vary: 'Accept' } npm verb etag http://registry.npmjs.org/cordova from cache npm verb get saving cordova to C:\Users\ferrero\AppData\Roaming\npm-cache\registry.npmjs.org\cordova\.cache.json npm verb addNamed "5.4.1" is a plain semver version for cordova npm verb addRemoteTarball http://registry.npmjs.org/cordova/-/cordova-5.4.1.tgz not in flight; adding npm verb addRemoteTarball [ 'http://registry.npmjs.org/cordova/-/cordova-5.4.1.tgz', npm verb addRemoteTarball 'bc56bc1d3c5387a7926408212dfbce59002f9d76' ] 

Cette fois, il ne se plaint de rien d’autre. Au lieu de cela, l’indicateur de chargement – un caractère de canal – continue de fonctionner. Alors, que dois-je faire pour télécharger une telle dépendance?

Il semble que nous examinions ici deux questions distinctes.

L’erreur de certificate est probablement due à un proxy SSL sortant. Quelqu’un, probablement votre employeur, ouvre tout le trafic SSL à la sortie. Pour résoudre ce problème, vous devez indiquer au NPM que ce certificate est acceptable en important le certificate de l’autorité de certificateion du proxy utilisé.

 npm config set cafile = "/the/certificatee/file.pem" 

Vous devrez peut-être également définir l’adresse proxy pour npm:

 npm config set proxy http://proxy.example.com:3128 npm config set https-proxy http://proxy.example.com:3128 

L’incompatibilité avec le noeud 5.0 semble avoir été corrigée selon mes recherches. La documentation semble tout simplement périmée.

Le bogue de Cordova qui pourrait être dû au problème était une méthode manquante dans la bibliothèque de promesses Q , dont dépend Cordova.

En novembre 2015, un utilisateur a pu utiliser Ionic avec succès avec le noeud 5.1.0 .

Même si je rencontrais le même problème en npm install -g XXX n’importe quelle commande npm install -g XXX , elle a été résolue par npm config set ssortingct-ssl false

Ok, je pense que la note sur le nœud 4 par rapport au nœud 5 date de l’époque ancienne de cordova 5.0, où il y avait un problème lors de l’installation de Cordova avec le nœud 5.

Depuis lors, ils ont publié Cordova 5.4 et Cordova 6, où il n’ya plus de problème avec le noeud 5.

Je n’utilise généralement pas ionic, mais pour être sûr, avec ma nouvelle installation du nœud v5.4.1, sur lequel j’exécutais déjà cordova 5.4 (installé également avec le nœud 5.4.1), je:

  • installé cordova 6: npm install -g cordova
  • installé ionique 1.7.13: npm install -g ionic
  • créé une application ionique: ionic start myApp tabs
  • lancer l’application sur un appareil Android

cd myApp cordova platform add android ionic run android

Et tout a fonctionné parfaitement.

Je suppose donc que vous pouvez essayer en toute sécurité d’installer la dernière version de node pour créer des applications avec ionic. Et peut-être que le nœud 5.4.1 résoudra le problème que vous rencontrez avec le nœud 4.2.4?

Le problème ici est que vous utilisez un certificate auto-signé selon l’erreur self signed certificatee in certificatee chain .

Si vous voulez corriger l’erreur ici quelques informations pour vous:

Mais s’il n’ya aucun moyen de régler le problème, il suffit de définir le registre http (porter sur le mot de config )

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

Une chose similaire m’est arrivée auparavant et ce qui a fonctionné pour moi à l’époque était.

Commencez par désinstaller node et npm. Deuxièmement, supprimez les dossiers npm et npm-cache sur C: \ Users \ votrenom \ AppData \ Roaming. Et enfin, retéléchargez et réinstallez une nouvelle copie de node.js.

Je ne sais pas si ça va marcher sur votre cas, mais j’espère que ça vous aidera!