web-dev-qa-db-fra.com

erreurs d'installation npm avec Erreur: ENOENT, chmod

J'essaie d'installer globalement un module npm que je viens de publier. Chaque fois que j'essaie d'installer, à 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!     <[email protected]>

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 deux cas similaires dont aucun n'a été résolu. Voici ce que j'ai essayé.

  • Npm de mise à niveau (Sudo npm install -g npm)
  • Efface le cache npm global (Sudo npm cache clear)
  • Effacer le cache de l'utilisateur npm (npm cache clear)

J'ai remarqué que l'erreur concernait le fichier que je lie au chemin, en particulier lorsque npm a essayé de faire un chmod. Cela ne devrait pas poser de problème, mon lib/cli.js dispose d'autorisations normales et npm dispose d'autorisations de superutilisateur 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é de l'installer avec, cela fonctionnait correctement.

Alors, quel est le problème? Est-ce que c'est un bizarre bogue qui n'a pas encore de solution?

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

97
giodamelio

Ok, il semblerait que NPM utilise votre .gitignore comme base pour le fichier .npmignore et ignore donc /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

109
badsyntax

J'ai rencontré un problème similaire, 

npm cache clean

résolu.

97
Genjuro

Je recevais cette erreur sur l’installation de npm et l’ajout de .npmignore ne l’a pas résolue.

Erreur: ENOENT, stat 'C:\Utilisateurs\Mon-Nom d'utilisateur\AppData\Roaming\npm'

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

C'est sur Windows 8.1

9
Vijay Vepakomma

Ce problème s’est posé pour moi sur Mac lorsque j’essayais d’exécuter npm install -g bower. Cela me donnait un certain nombre d'erreurs pour ne pas pouvoir trouver des choses comme graceful-fs. Je ne suis pas sûr de la manière dont j'ai installé npm à l'origine, mais il semblerait que le nœud utilisant homebrew ait été utilisé. J'ai d'abord couru

brew uninstall node

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

brew install node

Une fois terminé, 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é bower avec succès.

Mettre à jour les formules de brassage et mettre à niveau les installations ne semble pas fonctionner pour moi, je ne sais pas pourquoi. La suppression du dossier .npm était quelque chose qui avait fonctionné pour d’autres personnes, et j’avais essayé sans succès. Je l'ai fait cette fois juste au cas où. Notez également que ni l'un ni l'autre des éléments suivants n'a résolu le problème pour moi, mais pour d'autres:

npm cache clean
Sudo npm cache clean
9
user1978019

J'ai eu le même problème et je viens de trouver un traitement non mentionné 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'avais pas inclus dans la files dans mon package.json

"files": [
  "lib",
  "bin" // this was missing
]
4
dthree

J'ai reçu un message d'erreur similaire en essayant de npm install un groupe de dépendances. Il s'avère que certains d'entre eux ne parviennent pas à installer sur Debian/Ubuntu car ils s'attendent à ce que /usr/bin/node soit l'exécutable du noeud. Pour réparer, vous devez faire 

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
itsadok

Je recevais 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 suis pas sûr de la cause de l'erreur, mais j'avais récemment installé quelques nouveaux modules de nœud localement, mis à niveau un nœud avec homebrew et exécuté «npm update -g».

La seule façon pour moi de résoudre le problème a été de supprimer entièrement le répertoire local node_modules et de relancer npm install:

cd [path/to/local/installation]
npm rm -rdf node_modules
npm install
3
g.carey

Dans mon cas (code multiple erroné ENOENT 34), le problème était lié à l'accès au répertoire ~/.npm/. À l'intérieur, il y avait des sous-répertoires ayant les droits root:root, ce qui posait des problèmes lorsque j'exécutais les commandes en tant qu'utilisateur normal (sans Sudo). J'ai donc changé la propriété de tous les sous-répertoires et fichiers du répertoire ~/.npm/ en mon utilisateur et mon groupe locaux. Cela a fait l'affaire sur mon Ubuntu (sur Mac devrait fonctionner aussi).

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

Vous devriez connaître votre nom d'utilisateur, non? Si non, lancez $ whoami et remplacez-le par votre nom de groupe, comme ceci:

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

MODIFIER:

Cas de test :

Depuis mon compte local /home/johnb, j'ai installé par npm un générateur pour yeoman, comme ceci:

$ Sudo npm install -g generator-laravel

Nature du problème :

L'action ci-dessus a entraîné l'installation de certaines dépendances dans ~/.npm/ dir, propriété de root:root (à cause de Sudo ...). Évidemment, npm ne s'exécute pas en tant qu'utilisateur local (ni ne modifie ultérieurement la propriété des sous-répertoires de dépendances) lors de l'extraction des dépendances et de leur écriture dans un sous-répertoire d'utilisateur local ~/.npm/. . 

Solution :

  1. Vérifiez en permanence si ~/.npm/ contient des sous-répertoires avec des droits de propriété (et/ou des autorisations) autres que votre compte d'utilisateur local, en particulier lorsque vous installez ou mettez à jour quelque chose avec sodo (racine). Si tel est le cas, changez la propriété dans ~/.npm/ en un utilisateur local de manière récursive.

  2. Demandez à la communauté npm, bower, grunt, ... de s’attaquer au problème tel que je l’ai décrit ci-dessus.

2
paperclip

J'ai un problème similaire spécifique: ERR! enoent ENOENT: aucun fichier ou répertoire de ce type, chmod 'node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-conv .__ utilisait 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é (avec l'hôte), le tour est joué! problème résolu . Juste au cas où une autre personne utilisait également vagabond

2
joaco1977

Je pense que votre script café compilé est absent du paquetage npm publié. Essayez d’écrire une commande prepublish .

2
leeway

J'ai eu cette erreur en essayant d'installer un plugin Grunt. j'ai trouvé que j'avais une version obsolète de npm et que l'erreur a disparu après avoir mis à jour npm avec la dernière version

npm install -g npm
2
Prabhu Murthy

J'ai essayé tout ce que j'ai trouvé sur le net (npm cache clear et rm -rf ~/.npm), mais rien ne semble fonctionner. Le problème résolu était la mise à jour du noeud (et de npm) vers la dernière version. Essayez ça.

1
Nikola M.
  1. Installer la dernière version du noeud
  2. Run: npm cache clean
  3. Exécuter: npm install cordova -g
1
Dilhan Jayathilake

Dans Windows, j’ai eu une erreur similaire . Recherchez dans App Data et recherchez la chaîne npm.

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

1
Vinicius Carvalho

J'ai rencontré un comportement similaire après la mise à niveau vers npm 6.1.0. Cela a semblé fonctionner une fois, mais j'ai rencontré un problème avec cette erreur en essayant d'installer un paquet spécifié par chemin sur le système de fichiers:

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

Les choses suivantes n'ont pas résolu le problème :

  • rm -rf node_modules
  • npm cache clean (a donné 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ésolu le problème :

  • rm package-lock.json
1
Ian

Vous pouvez obtenir cette erreur si votre noeud.js est également corrompu. J'ai corrigé cette erreur par désinstaller/redémarrer/installer node.js complètement et cela a été corrigé, ainsi que les trois autres erreurs mystérieuses générées. 

1
LAdams87

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

Dans package.json:

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

Mais le ./bin/module n'existait pas, car il s'appelait modulejs.

1
hg.

Faites attention avec les valeurs non valides pour les clés "répertoires" et "fichiers" dans package.json

Si vous démarrez avec une nouvelle application et que vous souhaitez démarrer complètement vierge, vous devez Commencer dans un dossier complètement vide ou contenir un fichier package.json valide.

Si vous ne voulez pas d'abord créer un fichier package.json, tapez simplement: npm i some_package

Le paquet nommé "some_package" doit être installé correctement dans un nouveau sous-dossier "node_modules". 

Si vous créez d'abord un fichier package.json, tapez: npm init Conservez toutes les valeurs par défaut (en cliquant simplement sur ENTREE), vous devriez vous retrouver avec un fichier valide.

Ça devrait ressembler à ça:

{
  "name": "yourfoldername",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Notez que les clés suivantes sont manquantes: " directory ", " repository " et " files ". Il semble que si vous utilisez des valeurs incorrectes pour " répertoires " et/ou " fichiers ", vous ne pouvez pas installer le package. Laisser ces clés dehors a résolu le problème pour moi.

Notez également la clé " main ". Celui-ci est présent, mais il contient une valeur non valide. Aucun fichier "index.js" n'existe (encore). Vous pouvez l'enlever en toute sécurité.

Maintenant, tapez: npm i some_package Et le paquet avec le nom "some_package" doit être installé correctement dans un nouveau sous-dossier "node_modules".

1
RWC

Je recevais l'erreur "Erreur: ENOENT, stat 'C:\Utilisateurs\nom d'utilisateur\AppData\Roaming\npm'. Mais il n'y avait pas un tel répertoire. Créé le répertoire et l'installation de npm a commencé à fonctionner

0
k.iyengar

J'ai récemment mis à niveau le noeud 4.2.1 sur un ordinateur Windows 7 x64. Lors de l'exécution

npm install -g bower

J'ai une erreur similaire:

npm ERR! enoent ENOENT: aucun fichier ou répertoire de ce type, ouvrez 'C:\Utilisateurs\NOMUTILISATEUR\AppData\Local\Temp\npm-THE_HASH'

Pensant que cela était lié au chemin AppData, je me suis amusé avec 

npm config edit

et

npm config edit --global

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

npm ERR! enoent ENOENT: aucun fichier ou répertoire de ce type, ouvrez 'C:\Utilisateurs\THE_USERNAME\npm-temp\npm-THE_HASH'

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

Puis j'ai pensé qu'il y avait des problèmes avec les fichiers existants, alors j'ai lancé:

npm cache clean

Mais j'ai la même erreur. Cependant, il restait encore des fichiers temporaires. La suppression manuelle de toutes les données temporaires avec cygwin a finalement résolu le problème pour moi:

rm -rf bower bower.cmd node_modules etc

Si vous n’avez que Windows cmd, vous pouvez utiliser quelque chose comme:

rmdir /S THE_TEMP_DIR

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

Donc, peut-être qu’il ya des problèmes avec la mise à jour de npm et la présence de versions de bower ou d’autres paquetages. Dans mon cas, cela semblait être le problème

0
Andrew Johnston

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 comme mon cli.js était en dehors du répertoire lib/, il était ignoré lors de la publication vers npm.

(Le numéro de Yeoman sur https://github.com/yeoman/generator-node/issues/63 devrait bientôt être corrigé.)

0
Nathan Friedly

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 "npm ERR! Enoent ENOENT: aucun fichier ou répertoire de ce type, chmod '.../djam-backend/node_modules/js-beautify/js/bin/css-beautify.js", vous pouvez essayer d'installer une version précédente de js-beautify, plus de commentaires: https://github.com/beautify-web/js-beautify/issues/1247

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

et la course "make install". Cela semble fonctionner dans le cas où vous n'avez pas d'autres dépendances nécessitant une version plus récente (1.7.0). Dans ce cas, vous devez également rétrograder ce package dans le fichier packages.json.

ou 

0
Alex

D'abord faire

 npm rm -rdf node_modules

alors fais

npm install

Après cela, installez les fichiers que vous souhaitez ajouter

0
Shreyash Shetty

En installant ionic j'ai eu l'erreur ci-dessous

115648 error enoent ENOENT: aucun fichier ou répertoire de ce type, renommez 'C:\Utilisateurs\Nom d'utilisateur\AppData\Roaming\npm\noeud_modules.staging\ansi-b11f0c4b' -> 'C:\Users\Nom d'utilisateur\AppData\Roaming\npm\module_noeud\ionic\module_noeud\cordova-lib\module_noeud_ansi'

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

0
Vijay Mishra

Aucun de ce qui précède n'a fonctionné pour moi. Mais yarn install a fonctionné, puis npm i a commencé à fonctionner. Vous ne savez pas quel fil est fixe, mais une solution simple et rapide!

0
Todd Hale