web-dev-qa-db-fra.com

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:

> [email protected] 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: [email protected] 
  (node_modules/contextify):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] 
  install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

+ [email protected]
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.

35
NotoriousWebmaster

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

    1. 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.

  1. 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.

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

    mkdir ~/.npm-global

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

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

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

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

  4. 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

104
antzshrek