J'essaie 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 ce qui se trouve dans le paquet, 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 de npm (
sudo npm cache clear
) - Effacer le cache npm de l'utilisateur (
npm cache clear
)
J'ai remarqué que l'erreur avait à voir avec le 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 permissions normales, et npm a des permissions de superutilisateur pendant cette installation.
Après avoir fouillé dans la documentation de npm, j'ai trouvé une option qui empêcherait npm de créer les liens bin( --no-bin-links
), quand j'ai essayé de l'installer avec, ça a bien marché.
Alors, qu'est-ce qui se passe ? Est-ce que c'est un bogue de cas de frange bizarre qui n'a pas encore de solution ?
Edit : Pour référence, ici est le module que j'ai téléchargé
0 votes
Votre paquet utilise-t-il node-gyp ? Je pense que l'appel no-bin-links est lié si c'est le cas.
0 votes
Non, pas de code natif dans le module. Ici est la source du module de référence.
1 votes
Le site
--no-bin-links
empêche simplement npm d'établir des liens symboliques avec des fichiers dans le fichier package.json.bin
au chemin de l'installation globale.0 votes
Argh, j'ai déjà rencontré ce problème auparavant mais je ne me souviens pas pourquoi... je vous ferai savoir si cela me revient en mémoire.
0 votes
Merci, c'est vraiment très frustrant, j'ai tout vérifié un milliard de fois, mais je ne peux m'empêcher de penser que j'ai manqué quelque chose de très simple. Ou peut-être que c'est un bug bizarre.
0 votes
C'est quelque chose avec les chemins d'installation des bibliothèques dépendantes, je parie, mais cela ne semble pas être pertinent pour votre bibliothèque, donc je ne sais pas.
0 votes
Est-ce que c'est sous Linux ? Essayez peut-être d'exécuter "strace npm install ...". Regardez les appels stat ou open contre cmd.js. Cela pourrait montrer quelque chose d'intéressant, comme peut-être un préfixe de répertoire qui n'est pas affiché.
0 votes
Vous êtes sûr que ce n'est pas
npm cache clean
à la place ?0 votes
Voir aussi : stackoverflow.com/a/12964072/1027966
0 votes
Dans mon cas, le scénario est différent mais j'ai eu le même problème
npm ERR! code ENOENT
. la solution étaitcd .. && ls
parce que je ne sais pas comment, mais j'ai supprimé le répertoire, mais le terminal bash était toujours dans ce répertoire, c'est pourquoi.cd..
Je sors du repo supprimé, puis avecls
J'ai vérifié si j'étais dans le bon répertoire ou non. Si vous êtes dans le bon répertoire, vous pouvez copier et coller votrenpm create
et ce que vous voulez bien. c'est juste ce qui m'est arrivé... votre scénario est différent bien sûr, c'était seulement mon expérience. donc TLDR : vérifiez si vous êtes dans la bonne catégorie.