J'essaye d'installer globalement un module npm que je viens de publier. Chaque fois que j'essaie d'installer, que ce soit à partir de npm ou du dossier, j'obtiens cette erreur.
npm ERR! Error: ENOENT, chmod '/usr/local/lib/node_modules/takeapeek/lib/cmd.js'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR! System Linux 3.8.0-19-generic
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "takeapeek"
npm ERR! cwd /home/giodamlio
npm ERR! node -v v0.10.6
npm ERR! npm -v 1.3.6
npm ERR! path /usr/local/lib/node_modules/takeapeek/lib/cmd.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/giodamlio/npm-debug.log
npm ERR! not ok code 0
J'utilise sudo et j'ai vérifié trois fois tout dans le package, tout devrait fonctionner. J'ai fait quelques recherches et j'ai vu quelques cas similaires dont aucun n'a été résolu. Voici ce que j'ai essayé.
- Mettre à jour npm (
sudo npm install -g npm
) - Effacer le cache global npm (
sudo npm cache clear
) - Effacer le cache npm de l'utilisateur (
npm cache clear
)
J'ai remarqué que l'erreur était liée au fichier que je lie au chemin, en particulier lorsque npm a essayé de faire un chmod. Cela ne devrait pas être un problème, mon lib/cli.js
a des autorisations normales et npm a des autorisations de super-utilisateur pendant cette installation.
Après avoir fouillé dans les documents npm, j'ai trouvé une option qui empêcherait npm de créer les liens bin ( --no-bin-links
), lorsque j'ai essayé l'installation avec, cela fonctionnait bien.
Alors, quel est le problème? Est-ce un étrange bug de cas marginal qui n'a pas encore de solution?
Edit: Pour référence, voici le module que j'ai téléchargé
--no-bin-links
simple arrête npm de lier symboliquement les fichiers du bin
hachage de package.json au chemin lors de l'installation globale.