npm erreurs d'installation avec l'Erreur ENOENT, chmod

j'essaie d'installer globalement un module npm que je viens de publier. Chaque fois que j'essaie d'installer, que ce soit à partir du 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 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é.

  • Mise à niveau de mnp ( 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 avait à voir avec le fichier que je relie au chemin, en particulier quand npm a essayé de faire un chmod. Cela ne devrait pas être un problème, mon lib/cli.js a des permissions normales, et la npm a des permissions de super-utilisateur pendant cette installation.

après avoir creusé dans le npm docs j'ai trouvé une option qui arrêterait npm de faire les liens de bin ( --no-bin-links ), quand j'ai essayé l'installation avec elle, il a fonctionné très bien.

alors, c'est quoi le problème? Est-ce une bizarre frange cas de bug qui n'a pas encore trouvé de solution?

Modifier: pour référence, ici est le module que j'ai téléchargé

92
demandé sur mikemaccana 2013-08-01 13:49:10

24 réponses

Ok on dirait que NPM utilise votre .gitignore comme base pour le fichier .npmignore , et donc ignore /lib . Si vous ajoutez un fichier .npmignore Vierge à la racine de votre application, tout devrait fonctionner.

[edit] - plus d'informations sur ce comportement ici: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

102
répondu badsyntax 2014-12-24 15:51:07

j'ai rencontré un problème similaire,

npm cache clean

résolu.

95
répondu Genjuro 2014-05-03 15:27:46

ce problème est apparu pour moi sur Mac quand J'ai essayé de lancer npm install -g bower . Il me faisait un certain nombre d'erreurs pour ne pas être en mesure de trouver des choses comme graceful-fs. Je ne sais pas comment j'ai installé npm à l'origine, mais il semble que peut-être il est tombé avec noeud en utilisant homebrew. J'ai d'abord couru

brew uninstall node

cela a enlevé à la fois node et npm de mon chemin. De là, je viens de le réinstaller

brew install node

quand il complété j'ai eu node et npm sur mon chemin et j'ai pu courir

rm -rf ~/.npm
npm install -g bower

cela a ensuite installé la tour avec succès.

mettre à jour les formules brew et mettre à jour les installationsn'a pas semblé fonctionner pour moi, Je ne sais pas pourquoi. La suppression du dossier .npm avait fonctionné pour d'autres personnes, et je l'avais essayé sans succès. Je l'ai fait cette fois juste au cas où. Notez également que ni l'un ni l'suivantes résolu le problème pour moi, bien qu'il ait fait pour les autres:

npm cache clean
sudo npm cache clean
9
répondu user1978019 2014-01-09 23:52:44

j'ai eu cette erreur sur npm install and adding .npmignore ne l'a pas résolu.

erreur: ENOENT, stat "C:\Users\My-UserName\AppData\Roaming\npm

j'ai essayé d'aller dans le dossier mentionné et il n'existait pas. L'erreur a été corrigée lorsque I a créé npm dossier dans Roaming dossier.

C'est sur Windows 8.1

9
répondu Vijay Vepakomma 2014-11-15 23:08:50

j'ai eu le même problème, et je viens de trouver une manipulation non mentionnée ici. Bien que je contribue à la communauté:

npm install -g myapp ne copiait pas le répertoire bin . J'ai trouvé que c'était parce que je ne l'ai pas inclus dans le files dans mon package.json

"files": [
  "lib",
  "bin" // this was missing
]
4
répondu dthree 2015-06-11 00:26:41

j'ai eu un message d'erreur similaire en essayant de npm install un tas de dépendances. Il s'avère que certains d'entre eux ne s'installent pas sur Debian/Ubuntu parce qu'ils s'attendent à ce que /usr/bin/node soit l'exécutable du noeud. Pour corriger, vous avez besoin de do

sudo ln -s nodejs /usr/bin/node 

ou mieux encore,

sudo apt-get install nodejs-legacy

pour plus d'informations: https://stackoverflow.com/a/21171188/7581

3
répondu itsadok 2017-05-23 12:18:23

j'ai eu une erreur similaire sur npm install sur une installation locale:

npm ERR! enoent ENOENT: no such file or directory, stat '[path/to/local/installation]/node_modules/grunt-contrib-jst'

Je ne sais pas ce qui a causé l'erreur, mais j'avais récemment installé quelques nouveaux modules de noeuds localement, amélioré le noeud avec homebrew, et lancé 'npm update-g'.

la seule façon de résoudre le problème était de supprimer entièrement le répertoire local node_modules et d'exécuter npm install à nouveau:

cd [path/to/local/installation]
npm rm -rdf node_modules
npm install
3
répondu g.carey 2015-12-31 00:40:45

je pense que votre script café compilé est absent du paquet npm publié. Essayez d'écrire une commande prépublique .

2
répondu leeway 2013-08-01 23:34:59

dans mon cas (code multiple ENOENT errno 34) problème était avec ~/.npm/ l'accès à l'annuaire. À l'intérieur il y avait quelques sous-répertoires ayant les droits root:root , qui causaient des problèmes pendant que j'exécutais des commandes en tant qu'utilisateur normal (sans sudo ). J'ai donc changé la propriété de tous les sous-répertoires et fichiers dans ~/.npm/ dir en mon utilisateur et groupe local. Cela a fait le tour sur mon Ubuntu (sur Mac devrait fonctionner aussi).

$ sudo chown yourusername.yourgroupname ~/.npm/ -R

Vous devez connaître votre nom d'utilisateur, droit? Si non, Lancez $ whoami et remplacez votre nom de groupe par celui-ci, comme ceci:

$ sudo chown johnb.johnb ~/.npm/ -R

EDIT:

cas de Test :

de mon compte local /home/johnb I npm-installé globalement un générateur pour yeoman , comme ceci:

$ sudo npm install -g generator-laravel

Problème de la nature :

l'action ci-dessus a causé quelques dépendances être installé à l'intérieur de ~/.npm/ dir, ayant root:root propriété (en raison de sudo ... ). Évidemment, npm ne s'exécute pas en tant qu'utilisateur local (ou change dependencies subdivise la propriété après) en tirant les dépendances et en les écrivant à un utilisateur local sous-DIR ~/.npm/ . Aussi longtemps que npm serait si négligente face aux problèmes fondamentaux de sécurité du système de fichiers unix, le problème se reproduirait.

Solution :

  1. vérifiez en continu si ~/.npm/ contient des sous-répertoires avec la propriété (et/ou les permissions) autre que votre compte d'utilisateur local, surtout lorsque vous installez ou mettez à jour quelque chose avec sodo (root). Si c'est le cas, changez la propriété à l'intérieur de ~/.npm/ pour un utilisateur local récursivement.

  2. demandez à la communauté 1519170920 qu'elle s'attaque à ce problème comme je l'ai décrit ci-dessus.

2
répondu paperclip 2014-05-29 11:22:18

j'ai eu cette erreur en essayant d'installer un plugin grunt. j'ai trouvé que j'avais une version périmée de npm et l'erreur a disparu après avoir mis à jour npm à la dernière version

npm install -g npm
2
répondu Prabhu Murthy 2015-04-04 16:13:39

j'ai un problème similaire spécifiquement : ERR! enoent ENOENT: aucun fichier ou répertoire chmod 'node_modules/ngp/node_modules/demande/node_modules/http-signature/node_modules/sshpk/bin/sshpk-conv J'ai essayé toutes les solutions mais pas de chance. J'utilisais vagrant box, et le projet était dans un dossier partagé. Les problèmes semblent être seulement là, quand je déplace le projet dans un autre dossier non partagé (hôte woth), voilà! le problème est résolu. Juste au cas où une autre personne utilisait aussi Vagabond

2
répondu joaco1977 2017-03-02 21:05:58

j'ai essayé toutes les choses que j'ai trouvées sur le net ( npm cache clear et rm -rf ~/.npm ), mais rien ne semble fonctionner. Ce qui a résolu le problème était la mise à jour de noeud (et npm) à la dernière version. Essayez que.

1
répondu Nikola M. 2014-05-24 16:49:22

dans Windows j'ai eu une erreur similaire. Rechercher coller les données de L'application et rechercher la chaîne de caractères npm .

j'ai remplacé la chaîne de caractères 'npm' (y compris les guillemets) par 'npm.cmd' dans atlasboard\lib\package-dependency-manager.js et atlasboard\lib\cli\commands.js . Qui a résolu le problème.

1
répondu Vinicius Carvalho 2014-10-27 17:48:01

la même erreur lors de l'installation globale ( npm install -g mymodule ) pour un paquet avec un script non existant.

dans l'emballage.json:

    ...
    "bin": {
      "module": "./bin/module"
    },
    ...

mais le ./bin/module n'existe pas, car il a été nommé modulejs .

1
répondu hg. 2014-11-03 12:40:32
  1. installer la dernière version de node
  2. Run: mnp cache propre
  3. Run: npm install cordova-g
1
répondu Dilhan Jayathilake 2017-01-10 03:29:34

Vous pouvez obtenir cette erreur si votre nœud.js est endommagé en quelque sorte. J'ai corrigé cette erreur par désinstaller/redémarrer/nœud d'installation.js complètement et il a corrigé cette erreur, avec les trois autres erreurs mystérieuses qui sont lancées.

1
répondu LAdams87 2018-05-26 04:04:50

j'ai rencontré un comportement similaire après avoir passé au npm 6.1.0 . Cela semblait fonctionner une fois, mais ensuite j'ai été dans un état avec cette erreur en essayant d'installer un paquet qui était spécifié par path sur le système de fichiers:

npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename

les choses suivantes n'ont pas corrigé le problème :

  • rm -rf node_modules
  • npm cache clean (a npm ERR! As of npm@5, the npm cache self-heals .... use 'npm cache verify' instead. )
  • npm cache verify
  • rm -rf ~/.npm

Comment j'ai réglé le problème :

  • rm package-lock.json
1
répondu Ian 2018-07-12 12:50:16

j'ai eu un problème similaire avec une cause différente: le générateur yo node avait ajouté "files": ["lib/"] à mon package.json et parce que mon cli.js était en dehors du répertoire lib/ , il a été sauté lors de la publication au npm.

(Yeoman question https://github.com/yeoman/generator-node/issues/63 , il devrait être bientôt corrigé.)

0
répondu Nathan Friedly 2014-11-06 16:51:59

je recevais le message d'erreur ENOENT, stat 'C:\Users\userName\AppData\Roaming\npm'. Mais il n'y a pas de répertoire de ce type. A créé le répertoire et l'installation npm a commencé à fonctionner

0
répondu k.iyengar 2015-01-29 02:39:50

j'ai récemment mis à niveau en noeud 4.2.1 sur une machine Windows 7 x64. En cours d'exécution

npm install -g bower

j'ai eu une erreur similaire:

npm ERR! enoent ENOENT: no such file or directory, open 'C:\Users\THE_USERNAME\AppData\Local\Temp\npm-THE_HASH

pensant que C'était lié au chemin D'AppData, j'ai joué avec

npm config edit

et

npm config edit --global

pour changer les champs de préfixe, cache et tmp mais a reçu la même erreur avec les nouveaux chemins:

npm ERR! enoent ENOENT: no such file or directory, open 'C:\Users\THE_USERNAME\npm-temp\npm-THE_HASH

toutes les commandes ont été exécutées en tant qu'administrateur, donc j'ai eu toutes les permissions.

puis j'ai pensé qu'il y avait des problèmes avec les fichiers existants donc j'ai couru:

npm cache clean

But eu la même erreur. Cependant, il y avait encore des dossiers temporaires. Suppression manuelle de toutes les données temp avec cygwin a finalement réglé le problème pour moi:

rm -rf bower bower.cmd node_modules etc

si vous n'avez que le cmd de Windows, vous pouvez utiliser quelque chose comme

rmdir /S THE_TEMP_DIR

pour supprimer tous les sous-répertoires (bien que si vous avez des dépendances de noeuds profondément imbriquées, cela est notoirement problématique)

donc, il ya peut-être des problèmes avec la mise à niveau de la NGP et ayant des versions de bower ou d'autres paquets traîner autour. Dans mon cas, cela semblait être le problème

0
répondu Andrew Johnston 2015-10-30 16:45:16

lors de l'installation ionique j'ai obtenu en dessous de l'erreur

115648 d'erreur enoent ENOENT: aucun fichier ou répertoire, renommer "C:\Users\UserName\AppData\Roaming\npm\node_modules.mise en scène\ansi-b11f0c4b' - >"C:\Users\UserName\AppData\Roaming\npm\node_modules\ionic\node_modules\cordova-lib\node_modules\ansi

il n'y avait pas de dossier appelé ansi à ce chemin. Je l'ai créé là et il s'est installé correctement.

0
répondu Vijay Mishra 2017-01-06 18:13:55

si vous avez essayé de "faire installer" dans votre répertoire de projet avec cette erreur, vous pouvez l'essayer:

rm -rf ./node_modules
npm cache clear
npm remove sails

alors vous pouvez essayer de "faire installer"

si vous avez le " npm ERR! enoent ENOENT: aucun fichier ou répertoire chmod '.../djam-backend/node_modules/js-embellir/js/bin/css-embellir.js '"ensuite, vous pouvez essayer d'installer une version précédente de la js-beautify, plus de commentaires: https://github.com/beautify-web/js-beautify/issues/1247

"dependencies": {
  ...
  "js-beautify": "1.6.14"
  ...
}

et l'exécution"make install". Cela semble fonctionner dans le cas où si vous n'avez pas d'autres dépendances qui nécessitent une version plus élevée (1.7.0) dans ce cas, vous devez également dégrader ces paquets dans les paquets.json.

ou

0
répondu Alex 2017-09-18 10:36:14

rien de ce qui précède n'a fonctionné pour moi. Mais yarn install a fonctionné, puis npm i a commencé à fonctionner. Pas sûr de ce fil fixe, mais solution rapide et facile!

0
répondu Todd Hale 2017-10-19 21:36:16

s'il vous Plaît essayer cette

SET HTTP_PROXY=<proxy_name>

alors essayez cette commande.Il fonctionnera

-11
répondu user3030233 2015-12-02 19:18:43