web-dev-qa-db-fra.com

Erreur: EACCES: autorisation refusée, accédez à "/ usr/local/lib/node_modules"

Quelle pourrait être la cause de l'erreur Error: EACCES: permission denied, access '/usr/local/lib/node_modules'?

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!  { 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! A complete log of this run can be found in:
npm ERR!     /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log
30
hendra dedi

changez vos permissions de fichiers .. comme ça 

d'abord vérifier à qui appartient le répertoire

ls -la /usr/local/lib/node_modules

il refuse l'accès, car le dossier node_module appartient à root.

drwxr-xr-x   3 root    wheel  102 Jun 24 23:24 node_modules

il faut donc changer cela en changeant root en tant qu'utilisateur mais en exécutant d'abord la commande ci-dessous pour vérifier votre utilisateur actuel Comment obtenir le nom de l'utilisateur actif via la ligne de commande sous OS X?

id -un

puis changer de propriétaire 

Sudo chown -R [owner] /usr/local/lib/node_modules
79
okandas

essayez d’ajouter Sudo avant la commande que vous essayez.

comme ceci: Sudo npm install

L'utilisation de Sudo avec une commande sous Linux/UNIX élève généralement vos autorisations au niveau des super-utilisateurs. Sous Windows, le compte superutilisateur est généralement appelé "Administrateur". Sous Linux/Unix, le compte superutilisateur est généralement nommé 'root'.

L'utilisateur root a la permission d'accéder, de modifier ou de supprimer presque tous les fichiers de votre ordinateur. Les comptes d'utilisateur normaux peuvent accéder à, modifier ou supprimer beaucoup moins de fichiers. Les restrictions sur un compte normal protègent votre ordinateur des programmes ou des utilisateurs non autorisés ou nuisibles. Certains processus vous obligent à effectuer des actions sur des fichiers ou des dossiers auxquels vous n'êtes normalement pas autorisé à accéder. L’installation d’un programme accessible à tous est l’une de ces actions.

Dans votre cas, l'exécution de la commande d'installation avec Sudo vous donne les autorisations du superutilisateur et vous permet de modifier des fichiers que votre utilisateur normal n'est pas autorisé à modifier.

20
Pradeep Kumar HK

Tout ce que vous avez à faire est d’ajouter USER au propriétaire de/local/lib

Sudo chown -R $USER /usr/local/lib
7
Nizar

Lors de l'installation de packages globaux dans ubuntu , vous devez disposer d'autorisations d'écriture spéciales pour pouvoir écrire dans le dossier usr/bin. C’est pour des raisons de sécurité . Donc, chaque fois que vous installez un paquet global, utilisez:

Sudo npm install -g [package-name]

Pour votre cas particulier, ce sera:

Sudo npm install -g TypeScript
6
cinobili19

Si vous rencontrez ce problème sur votre Mac. Suivez ces étapes

Vérifier d'abord qui est le propriétaire de ce fichier en utilisant la commande ci-dessous

  ls -la /usr/local/lib/node_modules

vous trouverez des fichiers comme ci-dessous, l'un d'eux est ci-dessous

drwxr-xr-x 3 root wheel 768 29 mai 02:21 node_modules

avez-vous remarqué que le fichier ci-dessus est propre à la racine, car vous devez y apporter des modifications car vous devez changer le propriétaire du chemin.

vous pouvez utiliser check qui est l'utilisateur actuel avec cette commande

  id -un                    (in my case user is yamsol)

et ensuite vous pouvez changer en appelant cette commande (remplacez simplement votre nom d'utilisateur par ownerName)

  Sudo chown -R ownerName: /usr/local/lib/node_modules

dans mon cas, comme vous le savez l'utilisateur est "yamsol", j'appellerai cette commande de cette façon

  Sudo chown -R yamsol: /usr/local/lib/node_modules

c'est tout.

6
adnan javed

Pour minimiser les risques d'erreurs d'autorisations, vous pouvez configurer npm pour utiliser un autre répertoire. Dans cet exemple, vous allez créer et utiliser un répertoire caché dans votre répertoire de base.

Faites des sauvegardes de votre ordinateur. Sur la ligne de commande, dans votre répertoire de base, 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' Dans votre éditeur de texte préféré, ouvrez ou créez un fichier ~/.profile et ajoutez cette ligne: export PATH=~/.npm-global/bin:$PATH Sur la ligne de commande , mettez à jour vos variables système: source ~/.profile Pour tester votre nouvelle configuration, installez un paquet globalement sans utiliser Sudo

5
Naveen Raju

J'essayais d'installer react expo et à part de Sudo, je devais ajouter --unsafe-perm

comme ça. Cela résout mon problème

Sudo npm install -g expo-cli --unsafe-perm
4
Furquan

Il semble que vous rencontriez des problèmes d'autorisation. Si vous installez npm-packages, il est possible que vous obteniez une erreur EACCES lorsque vous essayez d'installer un package globalement. Cela signifie que vous n'êtes pas autorisé à écrire dans les répertoires que npm utilise pour stocker les packages et les commandes globaux.

Essayez d’exécuter les commandes: Sudo chmod u+x -R 775 ~/.npm et Sudo chown $USER -R ~/.npm ou vous pouvez simplement exécuter n’importe quelle commande npm avec Sudo, qui devrait vous permettre de résoudre votre problème.

Si vous installez un npm-package localement, vous devriez alors vous trouver dans le répertoire de votre projet local et essayer d’exécuter la commande Sudo npm install <pkg-name> pour installer le package requis. L'utilisation de Sudo a pour objectif de modifier vos autorisations de propriétaire afin que vous puissiez autoriser votre utilisateur actuel à exécuter les commandes npm.

Je vous recommande de regarder https://docs.npmjs.com/getting-started/fixing-npm-permissions

3
Suhas Gavad

Utilisez cette commande pour installer npm en tant qu'utilisateur Sudo:

Sudo npm install -g create-react-app instead of npm install -g create-react-app
3
Nimmi Verma

Soyez prudent avec toutes les réponses qui changent le propriétaire de tous les répertoires sous / usr/local En gros, ne bousillez pas le système Linux !!!

Je pense que le meilleur moyen est d'utiliser votre propre dossier pour localiser tous les packages globaux: https://www.competa.com/blog/how-to-run-npm-without-Sudo/

3
angelcervera

Pour linux/ubuntu si la commande

npm install -g <package_name>

npm WARN deprecated [email protected]: Please note that v5.0.1+ of superagent removes User-Agent header by default, therefore you may need to add it yourself (e.g. GitHub blocks requests without a User-Agent header).  This notice will go away with v5.0.2+ once it is released.

npm ERR! path ../lib/node_modules/<package_name>/bin/..

npm ERR! code EACCES

npm ERR! errno -13

npm ERR! syscall symlink

npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules
/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'

npm ERR!  { [Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>']

npm ERR!   cause:
npm ERR!    { Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'

npm ERR!      errno: -13,

npm ERR!      code: 'EACCES',

npm ERR!      syscall: 'symlink',

npm ERR!      path: '../lib/node_modules/<package_name>/bin/..',
npm ERR!      dest: '/usr/local/bin/ionic' },

npm ERR!   stack:
npm ERR!    'Error: EACCES: permission denied, symlink \'../lib/node_modules/ionic/bin/ionic\' -> \'/usr/local/bin/ionic\'',

npm ERR!   errno: -13,

npm ERR!   code: 'EACCES',

npm ERR!   syscall: 'symlink',

npm ERR!   path: '../lib/node_modules/<package-name>/bin/<package-name>',

npm ERR!   dest: '/usr/local/bin/<package-name>' }

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!     /home/User/.npm/_logs/2019-07-29T01_20_10_566Z-debug.log

Fix: Installer avec les permissions root

Sudo npm install <package_name> -g

2
Srilakshmy Krishnan

J'ai utilisé Sudo, mais le problème n'a pas été résolu, j'ai résolu le problème en modifiant les droits du dossier node_modules.

Sudo chmod -R 777 node_modules

Si vous le souhaitez, vous pouvez remplacer 777 par un autre code si vous ne définissez pas l'autorisation pour tous les utilisateurs/groupes.

2
Ahadul

Vous pouvez simplement changer le propriétaire ou simplement utiliser Sudo avant de commander comme ceci

Sudo chown -R [owner]:[owner] /usr/local/lib/node_modules ----- changer de propriétaire

ou

Sudo sudo npm install -g json-server

c'est tout.

1
Shahid jafrey

J'ai pu résoudre ce problème en installant nvm, puis en définissant le noeud sur la dernière version.

  1. Installez nvm en utilisant curl (pour la dernière version, accédez à nvm.sh )
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
  1. Lister les versions de noeud disponibles
nvm ls

v10.12.0
default -> v10.12 (-> v10.12.0)
noeud -> stable (-> v10.12.0) (par défaut)
stable -> 10.12 (-> v10.12.0)

  1. Choisissez la version du noeud à utiliser
nvm use v10.12

nvm n'est pas compatible avec l'option "prefix" de npm config: actuellement définie sur ""

  1. Exécutez ceci pour désactiver l'option:
nvm use --delete-prefix v10.12.0

Après avoir suivi les commandes ci-dessus, vous pourrez installer react/angular dans Ubuntu.

0
VishnuB

Vous devez disposer de l'autorisation des niveaux de superutilisateur pour installer React. Sous Linux/Unix, le compte superutilisateur est généralement nommé 'root'.

Pour obtenir le privilège de superutilisateur, exécutez la commande suivante sur votre terminal:

Sudo i

et exécutez simplement la commande pour installer React:

npm install -g create-react-app
0
Fatema T. Zuhora

On dirait que vous avez essayé d'installer un paquet npm globalement plutôt que localement, comme le décrit le man npm install:

L'argument -g ou --global obligera npm à installer le package globalement plutôt que localement.

Généralement, lorsque vous configurez un projet npm (parmi beaucoup d’autres que vous pourriez avoir), ce n’est pas une bonne idée d’installer des packages sur les modules globaux de Node.js (/ usr/local/lib/node_modules), car votre journal de débogage suggéré.

Au lieu d'utiliser -g, utilisez --save, qui enregistrera automatiquement le package en tant que dépendance de votre fichier package.json:

Comme ça:

$ npm install express-generator --save

$ cat package.json 
{
  "name": "first_app_generator",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
  "author": "ivanleoncz",
  "license": "MIT",
  "dependencies": {
    "express-generator": "^4.16.0"
  }
}

Mais comme les autres réponses mentionnées, si vous allez utiliser -g, vous devez utiliser Sudo (si votre utilisateur dispose des privilèges Sudo: voir/etc/sudoers) lors de l'exécution de npm install express-generator -g, mais ce n'est pas le cas. une bonne idée, causant éventuellement des problèmes d'autorisation.

NOTICE

Il existe des instructions pour installer express-generator avec l'option -g, afin que le script express-cli.js soit disponible sur le chemin système, mais vous pouvez également utiliser le script installé localement, situé à l'emplacement node_modules si votre projet npm:

$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp

Si un message tel que/usr/bin/env: ‘nœud’: Aucun fichier ou répertoire ne s'affiche, installez nodejs-legacy (Debian/Ubuntu)

IMHO, en utilisant -g (également en utilisant Sudo), c'est comme hic sunt dracones , si vous n'êtes pas sûr des conséquences.

Pour plus d'informations:

0
ivanleoncz

Je trouve le même problème avec le module webpack. Ma solution - supprimer le dossier node_modules rm -rf node_modules et exécuter npm i sans Sudo - l'installation devrait fonctionner.

0
Kamil Naja