Bonjour,

Voila je rencontre un petit problème avec mon code.

Salut
j'essai d'installer expo-cli avec le terminal mac mais ca me renvoi une erreur.

Ma configuration:
-os: mojave
-node: 10.16.0
-npm: 6.9.0

pouvez vous m'aidez à installer expo pour pouvoir enfin bosser avec react native parce que là ça devient compliqué avec toutes ces dépendance qui n'en finit pas
Je souhaite pouvoir installer expo-cli svp,
merci,
cordialement.

voici l'érreur:
Macintosh:~ apple$ npm install -g expo-cli
npm ERR! path /Users/apple/.npm/_cacache/index-v5/37/3f
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/Users/apple/.npm/_cacache/index-v5/37/3f'
npm ERR! { [Error: EACCES: permission denied, mkdir '/Users/apple/.npm/_cacache/index-v5/37/3f']
npm ERR! cause:
npm ERR! { Error: EACCES: permission denied, mkdir '/Users/apple/.npm/_cacache/index-v5/37/3f'
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'mkdir',
npm ERR! path: '/Users/apple/.npm/_cacache/index-v5/37/3f' },
npm ERR! isOperational: true,
npm ERR! stack:
npm ERR! 'Error: EACCES: permission denied, mkdir '/Users/apple/.npm/_cacache/index-v5/37/3f'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'mkdir',
npm ERR! path: '/Users/apple/.npm/_cacache/index-v5/37/3f',
npm ERR! parent: 'expo-cli' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/apple/.npm/_logs/2019-06-02T02_08_10_314Z-debug.log

13 réponses


Defy
Réponse acceptée

Petite rectification, c'est pas la ligne de commande linux, mais unix, apple n'etant pas un systeme linux mais unix ;-)

et si le problème est résolu, ne pas oublier de selectionner une réponse pour fermer le sujet

si tu fait un npm i -g faut le faire en sudo, ou alors il faut que tu te donne l'acces au répertoir via la commande chown dans ton terminal.

alpha go
Auteur

Merci pour ce retour,
mais j'ai oublié de préciser que j'avais déjà essayer en sudo su plus mon code perso mais ç m'a donné le même résultat si ce n'est que j'ai aussi des WARN (je pense warning)

c'est pas sudo su mais juste sudo npm i -g

alpha go
Auteur

j'ai essayer sudo npm i -g install expo-cli
toujours les même erreurs avec des warnings en plus

les warning c'est rien du tout, c'est juste pour te dire dans les dépendances il y a des trucs vieux, mais c'est pas a toi de gérer ca, donc pas de soucie de ce coté la.

tu a essayé le chown sur le dossier local npm?
teste aussi un chmod +w sur le dossier local npm

alpha go
Auteur

en faisant quelque recherche sur le net (car je ne connais pas trop les lignes de commande linux), je suis arrivé à faire ça :

1ère étape : Macintosh:~ apple$ sudo chmod -R +w /usr/local/bin/npm
2 ème étape : Macintosh:~ apple$ sudo npm i -g install expo-cli

j'ai toujours les mêmes erreur et après l'installation je fait un coup de :
Macintosh:~ apple$ expo -v
résultat : command not found

alpha go
Auteur

Par contre quand je fait un coup de :
cd /usr/local/bin

je voit bien les dossier expo et expo-cli mais impossible de les ouvrir
même en ayant fait un coup de
1- cd /usr/local/bin
2- rm node
3- rm npm
et avoir recommencer tout à zéro l'installation de node et npm sur le site officiel (biensur la version stable de node 10.16.0 et npm 6.9.0 qui est de toute facon fournit avec node)
j'ai toujours la même erreur quand bien même j'ai rajouté le droit chmod -R +w sur /usr/local/bin et fait ces action en tant que superUtilisateur sudo su et code perso

tu a pensé a faire ca avec le flag -R sur le chmod et le chown ? ca permet de dire que je prend le dossier et tout sont contenu

alpha go
Auteur

En faite en lisant la doc sur chmod que je ne connais pas j'ai vu qu'avec le paramètre -R ça donne les permissions au dossier de manière récursive et comme je n'ai pas jugé util de ne pas viser tout les dossiers enfant donc j'ai mis ce fameux -R
En tout cas j'en suis toujours au point zéro.
J'espère que je vais pas devoir apprendre la ligne de commande Linux avant de bosser avec react sinon je ne suis pas sorti de l'auberge

alors sache que tout bon dev qui se respecte doit connaitre un minimum le terminal, les tools en cli sont bon nombre et bon nombre de personne on ce genre de problème. Seule une bonne connaissance de ton terminal et de ta machine peut t'aider a comprendre le soucie.

La comme ca je ne voit qu'un problème de permission sur le dossier /Users/apple j'ai vue plus haut que le tu a appliqué le chmod sur le dossier /local/bin, hors c'est pas lui qui a un problème. normale que tu as toujours le problèmeil faut faire les bonne actions sur les bon dossiers. Si tu lit les messages d'erreur tu as Error: EACCES: permission denied, mkdir '/Users/apple/.npm/_cacache/index-v5/37/3fca veut dire que tu n'est pas autorisé sur le dossier /apple/.npm depuis le début tu ne cible pas le bon dossier

alpha go
Auteur

Merci pour vos conseils,
Ça s'arrange et en même temps j'apprends la ligne de commande Linux mais vous avez raison je vais m'y mettre sérieusement à la ligne de commande linux

Par moment un bon sudo npm cache clean -f peut s'avérer utile pour résoudre ce genre de soucis. J'ai par ailleurs moi-même essayé du chmod en récursif et très souvent ce n'est pas suffisant. Et pour répondre à l'autre sujet, nul besoin d'être un as en ligne de commande pour faire du React mais juste connaître les plus usuelles est amplement suffisant. Nul doute que par la suite tu vas t'améliorer. Comme dit le proverbe "C'est en forgeant qu'on devient forgeron".