npm install -g less ne fonctionne pas: EACCES: autorisation refusée

203

J'essaie de configurer moins sur phpstorm afin de pouvoir compiler des fichiers .less en .css lors de la sauvegarde. J'ai installé node.js et l'étape suivante (selon ce https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html ) exécute cette commande dans le Terminal

npm install -g less

Cependant, lorsque je fais cela, j'obtiens ces erreurs

  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/brentscholl/npm-debug.log

Je suis un noob complet ici et je ne sais pas quoi faire ensuite. Toute aide serait très appréciée!

xslibx
la source

Réponses:

354

L'utilisation de sudo n'est pas recommandée. Cela peut vous donner un problème d'autorisation plus tard. Bien que ce qui précède fonctionne, je ne suis pas un fan de la modification des dossiers appartenant à root pour être accessibles en écriture aux utilisateurs, bien que cela ne puisse être un problème qu'avec plusieurs utilisateurs. Pour contourner ce problème, vous pouvez utiliser un groupe, avec des «utilisateurs npm», mais cela représente également une surcharge administrative. Voir ici pour les options pour gérer les autorisations de la documentation: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Je choisirais l'option 2:

Pour minimiser le risque d'erreurs d'autorisation, vous pouvez configurer npm pour utiliser un répertoire différent. Dans cet exemple, ce sera un répertoire caché sur votre dossier personnel.

Créez un répertoire pour les installations globales:

 mkdir ~/.npm-global

Configurez npm pour utiliser le nouveau chemin de répertoire:

 npm config set prefix '~/.npm-global'

Ouvrez ou créez un fichier ~ / .profile et ajoutez cette ligne:

 export PATH=~/.npm-global/bin:$PATH

De retour sur la ligne de commande, mettez à jour vos variables système:

 source ~/.profile

Test: téléchargez un package globalement sans utiliser sudo.

npm install -g jshint

Si toujours afficher l'erreur d'exécution d'autorisation (mac os):

sudo chown -R $USER ~/.npm-global   

Cela fonctionne avec l'installation ubuntu par défaut de:

sudo apt-get install nodejs npm

Je recommande nvmsi vous voulez plus de flexibilité dans la gestion des versions: https://github.com/creationix/nvm

Sur MacOS, utilisez brew, cela devrait fonctionner sans être prêt à l'emploi sudosi vous utilisez une npmversion récente . Prendre plaisir :)

Vincent Gerris
la source
Attention - sur Ubuntu 18.04, je devais me déconnecter et me reconnecter avant que le changement ne soit appliqué automatiquement à toutes les nouvelles fenêtres de terminal.
Alexander Nied
Alexander, vous êtes-vous assuré d'utiliser la commande source? Cela devrait prendre soin de définir les bonnes variables d'environnement, la déconnexion ne devrait pas être nécessaire (mais fonctionne).
Vincent Gerris
cela n'a pas fonctionné $ npm install -g jshint npm ERR! écrire après fin npm ERR! Un journal complet de cette course peut être trouvé dans: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith
3
Merci pour ce "Sous MacOS, utilisez brew"
Bijender Singh Shekhawat
110

Exécutez ces commandes dans une fenêtre de terminal (remarque: NE remplacez PAS la partie $ USER ... c'est une commande linux pour obtenir votre utilisateur!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules
Vagner Rodrigues
la source
7
Est-ce une bonne idée de se faire propriétaire des choses /usr? Et si quelqu'un d'autre veut installer des trucs de nœuds?
Mark
6
A travaillé pour moi sur macOS High Sierra, je ne avais besoin l' une des trois commandes: sudo chown -R $USER /usr/local/lib/node_modules. @Mark C'est vrai, mais ce n'est bien sûr pas un problème si vous n'avez qu'un seul utilisateur.
Fabian von Ellerts
@FabianvonEllerts Eh bien, il est toujours plus facile de supprimer accidentellement des fichiers système, car vous n'aurez plus besoin de sudo ... Je suivrais simplement les meilleures pratiques même seul, mais cela dépend de vous, bien sûr.
Mark
Je suis avec Mark, sauf si vous avez un utilisateur (et même dans ce cas), vous ne voulez pas que les sous-répertoires / usr appartiennent à un seul utilisateur, dans ce cas, mieux utiliser le groupe. Mais peut-être encore mieux, utilisez simplement brew comme je l'ai mentionné dans ma réponse, cela fonctionnera sans racine hors de la boîte.
Vincent Gerris
11

Réinstallez le nœud et npm avec Node Version Manager (conformément à la documentation de npm ) pour éviter les erreurs d'autorisation:

Sous OSX:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

ou suivez cet article:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Les utilisateurs de Windows doivent installer nvm-windows . Pour plus d'informations sur l'installation de nvm, reportez-vous au fichier Lisezmoi de nvm .

Choisissez ensuite par exemple:

nvm install 8.0.0
nvm use 8.0

Vous pouvez maintenant essayer à nouveau:

npm install -g less
gazdagergo
la source
1
Je l'ai utilisé pour résoudre les problèmes d'autorisation d'installation de packages sur CodeSandbox.
Keith Taylor
11

Réponse de Mac OS X

Vous n'avez pas accès en écriture au répertoire node_modules

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Ajoutez votre utilisateur au répertoire avec un accès en écriture

  1. Ouvrir le dossier contenant node_modules

    ouvrir / usr / local / lib /

  2. Faites un cmd + I sur le dossier node_modules pour ouvrir la boîte de dialogue des autorisations
  3. Ajoutez votre utilisateur pour avoir un accès en lecture et en écriture dans la section partage et autorisations entrez la description de l'image ici
Roderick Jonsson
la source
La solution la plus simple et la plus efficace pour MacOS
itsazzad
8

entrez la description de l'image iciUtilisez sudo -i pour basculer vers $ root, puis exécutez npm install -g xxxx

user3393929
la source
7

Pour mon environnement Mac

sudo chown -R $USER /usr/local/lib/node_modules

résoudre le problème

Asadut Zaman
la source
Je crois que cela est déjà couvert dans la réponse de @ VagnerRodrigues ci-dessus.
entpnerd
Oui, je viens de mentionner pour l'environnement mac
Asadut Zaman
3

Appuyez simplement sur la commande ci-dessous:

sudo chown -R $USER /usr/local/lib/node_modules

Décomposons-le:

sudo

signifie que nous exécutons cette commande en tant que root, le super utilisateur du système. C'est parce que nous n'avons pas la permission d'écrire dans ce dossier, mais root pourra corriger n'importe quelle permission. Cette commande signifie également que le système vous demandera de confirmer votre mot de passe.

chown

est la commande que nous utilisons pour changer le propriétaire d'un fichier ou d'un dossier. Nous avons défini l'option -R pour changer le propriétaire de manière récursive, nous avons donc également accès au propriétaire à tous les fichiers qui y sont déjà contenus.

$ USER

est une variable d'environnement définie automatiquement sur votre nom d'utilisateur.

Et la dernière pièce est le chemin du dossier.

L'exécution de ce chemin rendra le dossier le vôtre, vous pouvez donc exécuter en toute sécurité vos commandes npm install -g!

Akash Singh Sengar
la source
0

J'ai essayé toutes les solutions suggérées mais rien n'a fonctionné.

J'utilise macOS Catalina 10.15.3

Allez dans / usr / local /

Sélectionnez le dossier bin> Obtenir des informations

Ajoutez votre utilisateur au partage et aux autorisations. Autorisations de lecture et d'écriture. entrez la description de l'image ici

Et allez sur le terminal et exécutez npm install -g @ ionic / cli

Cela m'a aidé.

Gohar SUltan
la source
-1

Sous Linux, assurez-vous d'obtenir toute l'autorité avec:

sudo su
kira
la source
-2

Une autre option consiste à télécharger et installer une nouvelle version à l'aide d'un programme d'installation.

https://nodejs.org/en/download/

Jim
la source
-3

Salut, j'utilise Ubuntu 18 et j'avais trop reçu ce message d'erreur lors de l'installation de Prisma, alors j'ajoute juste sudoà l'avant

sudo npm i -g prisma
UA_
la source