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é.
Sudo npm install -g npm
)Sudo npm cache clear
)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é
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
J'ai rencontré un problème similaire,
npm cache clean
résolu.
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
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
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
]
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
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
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 :
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.
Demandez à la communauté npm, bower, grunt, ...
de s’attaquer au problème tel que je l’ai décrit ci-dessus.
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
Je pense que votre script café compilé est absent du paquetage npm publié. Essayez d’écrire une commande prepublish .
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
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.
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.
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
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.
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
.
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".
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
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
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é.)
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
D'abord faire
npm rm -rdf node_modules
alors fais
npm install
Après cela, installez les fichiers que vous souhaitez ajouter
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.
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!