18 votes

Paquet npm nodejs | problème de npm link

Je suis en train de créer un package npm (plugin) pour installer le petit framework JS via node, j'ai également créé le package.json requis.

Après avoir exécuté la commande npm link dans le terminal Mac, j'ai rencontré les erreurs suivantes.

npm ERR! Error: EACCES, symlink '/Repos/GIT/JavaScript-Boilerplate'
npm ERR!  { [Error: EACCES, symlink '/Repos/GIT/JavaScript-Boilerplate']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Repos/GIT/JavaScript-Boilerplate' }
npm ERR! 
npm ERR! Veuillez essayer d'exécuter à nouveau cette commande en tant que root/Administrateur.

npm ERR! Système Darwin 12.3.0
npm ERR! commande "node" "/usr/local/bin/npm" "link"
npm ERR! répertoire de travail /Repos/GIT/JavaScript-Boilerplate
npm ERR! version de node v0.10.4
npm ERR! version de npm 1.2.18
npm ERR! chemin /Repos/GIT/JavaScript-Boilerplate
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! pile Error: EACCES, symlink '/Repos/GIT/JavaScript-Boilerplate'
npm ERR! 
npm ERR! Vous pouvez consulter les détails de journalisation supplémentaires dans :
npm ERR!     /Repos/GIT/JavaScript-Boilerplate/npm-debug.log
npm ERR! code non ok 0

P.S. Je suis assez nouveau sur nodejs mais j'ai une solide expérience en JavaScript, faites-moi savoir si vous avez besoin de plus de détails.

MODIFIER - J'ai réussi à résoudre les problèmes mentionnés ci-dessus mais maintenant j'ai plus de problèmes comme ci-dessous :

6495 verbose false,/Repos/GIT/JavaScript-Boilerplate/node_modules,/Repos/GIT/JavaScript-Boilerplate/node_modules/jquery/node_modules unbuild contextify@0.1.5
6496 info postuninstall contextify@0.1.5
6497 verbose about to build /Repos/GIT/JavaScript-Boilerplate/node_modules/jquery
6498 info /Repos/GIT/JavaScript-Boilerplate/node_modules/jquery unbuild
6499 verbose from cache /Repos/GIT/JavaScript-Boilerplate/node_modules/jquery/package.json
6500 info preuninstall jquery@1.8.3
6501 info uninstall jquery@1.8.3
6502 verbose true,/Repos/GIT/JavaScript-Boilerplate/node_modules,/Repos/GIT/JavaScript-Boilerplate/node_modules unbuild jquery@1.8.3
6503 info postuninstall jquery@1.8.3
6504 error contextify@0.1.5 install: `node-gyp rebuild`
6504 error `sh "-c" "node-gyp rebuild"` a échoué avec 1
6505 error Échec de l'exécution du script d'installation de contextify@0.1.5.
6505 error Il s'agit très probablement d'un problème avec le package contextify,
6505 error et non avec npm lui-même.
6505 error Indiquez à l'auteur que cela ne fonctionne pas sur votre système :
6505 error     node-gyp rebuild
6505 error Vous pouvez obtenir leurs coordonnées via :
6505 error     npm owner ls contextify
6505 error Il y a probablement des informations de journalisation supplémentaires ci-dessus.
6506 error Système Darwin 12.3.0
6507 error commande "node" "/usr/local/bin/npm" "link"
6508 error répertoire de travail /Repos/GIT/JavaScript-Boilerplate
6509 error version de node v0.10.4
6510 error version de npm 1.2.18
6511 error code ELIFECYCLE
6512 verbose exit [ 1, true ]
    enter code here
    enter code here

On dirait que j'y suis presque :)

12voto

Yves M. Points 1439

Les autorisations que vous avez utilisées lors de l'installation de Node seront requises lorsque vous ferez des choses comme écrire dans votre répertoire npm (npm link, npm install -g, etc.).

Vous avez probablement lancé l'installation de Node avec des autorisations root, c'est pourquoi l'installation de packages globaux vous demande d'être root.

Solution 1: NVM

Ne bidouillez pas avec les autorisations, installez node de la bonne manière.

Sur une machine de développement, vous ne devriez pas installer et exécuter Node avec des autorisations root, sinon des choses comme npm link, npm install -g nécessiteront les mêmes autorisations.

NVM (Node Version Manager) vous permet d'installer Node sans autorisations root et vous permet également d'installer de nombreuses versions de Node pour les manipuler facilement. Parfait pour le développement.

  1. Désinstallez Node (des autorisations root seront probablement nécessaires).
    • Pour supprimer tous les modules globaux npm précédemment installés, consultez ces réponses.
  2. Puis installez NVM en suivant les instructions sur cette page.
  3. Installez Node via NVM : nvm install stable

Maintenant, npm link, npm install -g ne nécessiteront plus d'être root.

Solution 2: Installer des packages globalement pour un utilisateur donné

Ne bidouillez pas avec les autorisations, installez les packages npm globalement de la bonne manière.

Si vous êtes sur OSX ou Linux, vous pouvez créer un répertoire dédié à l'utilisateur pour vos packages globaux et configurer npm et node pour savoir comment trouver les packages installés globalement.

Consultez cet excellent article pour des instructions pas à pas sur l'installation de modules npm globalement sans sudo.

Consultez également : la documentation de npm sur Correction des autorisations npm.

8voto

nwinkler Points 5889

La manière la plus simple de résoudre cela serait d'exécuter à nouveau la même commande en utilisant sudo :

sudo npm link

Veuillez ne pas changer le propriétaire du répertoire /usr/local, car cela pourrait a) avoir d'autres implications sur les applications installées et b) compromettre la sécurité de votre système. Utiliser sudo est la bonne manière de résoudre cela.

6voto

Damo Points 515

Cela peut être corrigé sous linux ou dans mon cas WSL en définissant le répertoire de packages globaux dans l'espace utilisateur plutôt que dans root.

Créez d'abord un répertoire pour les packages globaux

mkdir ~/.npm-packages

Ensuite, indiquez à npm où stocker les packages installés de manière globale

npm config set prefix ~/.npm-packages

Enfin, assurez-vous que npm trouvera les binaires installés et les pages de manuel en ajoutant ce qui suit à votre .bashrc/.zshrc:

NPM_PACKAGES=~/.npm-packages
export PATH="$PATH:$NPM_PACKAGES/bin"
# Préservez MANPATH si vous l'avez déjà défini quelque part dans votre configuration.
# Sinon, utilisez `manpath` pour hériter de `/etc/manpath`.
export MANPATH="${MANPATH-$(manpath)}:$NPM_PACKAGES/share/man"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X