Comment corriger l'erreur Error: EACCES: permission denied, access '/usr/local/lib/node_modules' ?

Grâce au gestionnaire de paquets NPM, on peut installer facilement n'importe quelle librairie fonctionnant avec un serveur Node.js. Pour cela, il est nécessaire d'avoir accès à un dossier "node_modules". Celui-ci va contenir les différentes librairies que vous allez installer. Une erreur "permission denied" indique que vous n'avez pas accès à ce dossier en écriture, ce qui empêche l'installation des librairies sans utiliser "sudo", pour lancer la commande en tant que super utilisateur. Il existe plusieurs solutions pour corriger le problème.

La première possibilité consiste à modifier le propriétaire du dossier "/usr/local/lib/node_modules" pour attribuer son propre compte utilisateur. La première chose est d'abord de connaître son nom d'utilisateur. Sous Linux, vous pouvez le voir en lançant simplement un terminal. Il se trouve avant le signe "@" sur l'intitulé avant la commande. Sous macOS, il existe une commande qui affiche le nom d'utilisateur dans le terminal :

id -un

Vous pouvez ensuite changer le nom d'utilisateur du dossier avec la commande "chown". L'option "-R" permet de changer l'utilisateur uniquement, sans spécifier le groupe.

sudo chown -R utilisateur /usr/local/lib/node_modules

Sous Linux, il existe la variable d'environnement "$USER", qui correspond à l'utilisateur en cours. De cette manière, vous pouvez copier directement la commande dans votre terminal.

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

La deuxième solution, qui affectera moins le système qu'un changement de propriétaire d'un dossier, consiste à créer un nouveau dossier dans votre répertoire personnel, qui va contenir les librairies installées avec NPM. Créez tout d'abord le répertoire :

mkdir ~/.mes-modules-npm

Pour que NPM utilise ce répertoire, on se sert la commande "npm config", qui permet de récupérer et changer la configuration de NPM. Il faut modifier la variable "prefix" pour lui indiquer le nouveau répertoire :

npm config set prefix '~/.mes-modules-npm'

Pour que cette configuration fonctionne, il va falloir enregistrer le répertoire dans la variable "PATH" du système. Pour cela, ouvrez le fichier "~/.profile" avec un éditeur de texte et ajoutez la ligne suivante :

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

Utilisez ensuite la commande "source" pour lire le fichier et interpréter la commande.

source ~/.profile

Vous n'avez plus qu'à installer un paquet sans utiliser la commande "sudo" afin de vérifier que cela fonctionne :

npm install librairie

JavaScript