Autorisation refusée lors de l'installation de modules npm sous OSX
J'essaie d'installer node-g.raphael
et j'obtiens le message d'erreur suivant:
Bender-03:htdocs alfred$ Sudo npm install node-g.raphael --save
Password:
> contextify@0.1.15 install
/Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify
> node-gyp rebuild
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir
'/Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify/build'
gyp ERR! System Darwin 16.7.0
gyp ERR! command "/usr/local/bin/node"
"/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js"
"rebuild"
gyp ERR! cwd
/Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify
gyp ERR! node -v v8.8.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: contextify@0.1.15
(node_modules/contextify):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: contextify@0.1.15
install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
+ node-g.raphael@0.0.9
added 2 packages and updated 1 package in 6.556s
J'ai essayé cette solution , mais cela ne résout pas mon problème, mais j'ai toujours la même erreur.
Dites-moi si je peux ajouter quelque chose pour aider à résoudre ce problème.
Vu ceci depuis Fixer les permissions npm et ça a aidé, vous pourriez peut-être aussi tenter le coup.
Option 1: changer l'autorisation en répertoire par défaut de npm
Trouvez le chemin du répertoire de npm:
npm config get prefix
Pour de nombreux systèmes, il s'agira de /usr/local
.
WARNING: si le chemin affiché n’est que /usr
, passez à Option 2 ou vous allez gâcher vos permissions.
Remplacez le propriétaire des répertoires de npm par le nom de l'utilisateur actuel (votre nom d'utilisateur):
Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
Cela modifie les permissions des sous-dossiers utilisés par npm et certains autres outils (lib/node_modules
, bin
et share
).
- Option 2: changez le répertoire par défaut de npm en un autre répertoire
Il arrive que vous ne souhaitiez pas modifier la propriété du répertoire par défaut utilisé par npm (_ /usr
], car cela pourrait entraîner des problèmes, par exemple si vous partagez le système avec d'autres utilisateurs.
Au lieu de cela, vous pouvez configurer npm pour utiliser un répertoire complètement différent. Dans notre cas, ce sera un répertoire caché dans notre 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 node-g.raphael --save`
Au lieu des étapes 2 à 4, vous pouvez utiliser la variable ENV correspondante (par exemple, si vous ne souhaitez pas modifier ~/.profile
):
NPM_CONFIG_PREFIX=~/.npm-global
- Option 3: Utilisez un gestionnaire de paquets qui s’occupe de cela pour vous.
Si vous effectuez une nouvelle installation de Node sur Mac OS, vous pouvez éviter ce problème en utilisant le gestionnaire de packages Homebrew
. Homebrew
installe les choses avec les autorisations appropriées.
brew install node
J'espère que ça aide