NPM bloqué en donnant la même erreur EISDIR: opération illégale sur un répertoire, lu en erreur (natif)


102

Je suis coincé avec cette erreur quel que soit le répertoire dans lequel je me trouve et ce que je tape après "npm" dans cmd.exe. Voici le npm-debug.log:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js' ]
2 info using npm@2.14.12
3 info using node@v4.2.6
4 verbose stack Error: EISDIR: illegal operation on a directory, read
4 verbose stack     at Error (native)
5 verbose cwd C:\Users\me
6 error Windows_NT 6.1.7601
7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"
8 error node v4.2.6
9 error npm  v2.14.12
10 error code EISDIR
11 error errno -4068
12 error syscall read
13 error eisdir EISDIR: illegal operation on a directory, read
13 error eisdir This is most likely not a problem with npm itself
13 error eisdir and is related to npm not being able to find a package.json in
13 error eisdir a package you are trying to install.
14 verbose exit [ -4068, true ]

J'ai essayé de désinstaller / réinstaller nodejs plusieurs fois, j'ai même supprimé les dossiers npm et npm-cache dans C: \ Users \ me \ AppData \ Roaming. Je ne sais pas ce qui a mal provoqué cela. Une seconde, cela fonctionnait bien, et maintenant je ne peux pas me débarrasser de cette erreur. L'explication dans le journal n'a pas de sens, car elle donne cette erreur dans n'importe quel répertoire. Je dois noter que l'exécution d'une invite de commande en tant qu'administrateur ne donne pas cette erreur. Je me tire les cheveux ce vendredi soir en essayant de résoudre ce problème, toute aide serait grandement appréciée!


1
Je trouve que cette erreur est courante lorsque les gens mettent à jour npm, je me demande si cette erreur a commencé lorsque vous avez mis à jour npm, ou si vous avez même mis à jour du tout?
Clavin

C'est un nouvel ordinateur, j'avais donc installé node ces derniers jours. Je viens de faire une mise à jour en mode administrateur, mais pas de chance
AnotherMike

Réponses:


61

J'ai rencontré le même problème pendant que je modifiais certains paramètres de npm. J'ai fait une erreur avec une npm config setcommande et cela a ajouté une ligne faisant référence à un répertoire non existant C:\Users\{User}\.npmrc. Après avoir supprimé cette ligne manuellement .npmrc, le problème avait disparu.


1
A quel point suis-je idiot? J'étais dans un sous-dossier ahahahah merci.
Sampgun

Moi aussi, je pointais cafile vers un dossier au lieu d'un fichier réel, et chaque npmcommande a cessé de fonctionner complètement, aucune solution n'a fonctionné en dehors de votre réponse, merci!
Giorgio Tempesta

194

EISDIR signifie " Error, Is Directory ". Cela signifie que NPM essaie de faire quelque chose sur un fichier, mais c'est un répertoire . Dans votre cas, NPM essaie de " lire " un fichier qui est un répertoire (ligne: 4). Étant donné que l'opération ne peut pas être effectuée, l'erreur est renvoyée.

Trois choses à s'assurer ici.

  1. Assurez-vous que le fichier existe. Si ce n'est pas le cas, vous devez le créer. (Si NPM dépend d'une information spécifique dans le fichier, vous devrez y avoir ces informations).
  2. Assurez-vous qu'il s'agit bien d'un fichier et non d'un répertoire.
  3. Il a les bonnes autorisations. Vous pouvez modifier le fichier pour avoir toutes les autorisations avec "sudo chmod 777 FILE_NAME". (Attention: vous accordez des autorisations de lecture, d'écriture et d'exécution à tous ceux de ce fichier)

13
Cela devrait être la réponse acceptée imo car elle contient des informations sur le problème ainsi qu'une solution
schu34

4
A quel point suis-je idiot? J'étais dans un sous-dossier ahahahah merci.
Sampgun

4
J'ai passé 3 heures là-dessus. J'avais un dossier appelé back-button.css. 3 heures, je ne reviens jamais. Merci à vous ce n'était pas 4.
Loke

1
J'ai obtenu cela en utilisant fs.writeFile - mais une erreur a empêché mon programme de passer le FileName, il essayait donc d'écrire sur un dossier. Merci.
Nelles

1
C'est correct. J'ai rencontré ce problème lors de l'utilisation de nodemailer dans une application de bureau NW.js lors de l'écriture de code pour un gestionnaire de messagerie. J'essayais également de lire le répertoire au lieu de lire un fichier image à envoyer en pièce jointe. Merci beaucoup.
hygull

13

J'ai eu le même problème aujourd'hui après avoir mis à niveau mon npm de la version 6.4.1 à la version 6.5.0. J'ai corrigé cela en téléchargeant le programme d'installation .pkg (recommandé pour la plupart des utilisateurs) à partir de node.js et je l'ai exécuté par la suite.


La même méthode m'a aidé
DNReNTi

ma machine a la même version de npm installée mais je suis toujours confronté au problème
Gaurav Paliwal

9

Dans mon cas, j'obtenais le "EISDIR: opération illégale sur un répertoire, lu" parce que dans mon fichier .angular-cli.json je ne fournissais pas un chemin complet dans "scripts:"

Par exemple j'avais

"scripts": [
        "../node_modules/hammerjs",
        "../node_modules/moment"
      ],

En fait, cela aurait dû être

"scripts": [
        "../node_modules/hammerjs/hammer.min.js",
        "../node_modules/moment/min/moment.min.js"
      ],

7

J'ai eu le même problème sur Mac OS X (installé avec homebrew), et le .npmrc n'est pas le seul emplacement des variables de configuration stockées par le nœud. Il existe un fichier de configuration glocal npmrc dans / usr / local / etc que vous devez modifier à l'aide de cette commande:

sudo nano npmrc

Supprimez la ca=ligne, ou quel que soit le paramètre de configuration qui a interrompu votre installation, enregistrez ce fichier et réessayez npm, et vous devriez le voir fonctionner.


Heureux d'avoir pu aider.
rncrtr

4

Ces erreurs étranges se sont produites récemment sur ma machine OSX.

Je pourrais m'aider de manière rapide et sale en courant:

sudo chmod -R 777 /usr/local/lib/node_modules/

Quelque chose semblait avoir gâché les droits d'accès de tous les modules de nœuds globaux.


2

Pour moi, la réparation consistait à ajouter une barre oblique après le nom du répertoire


1

Faire une désinstallation complète, y compris la suppression des chemins, etc. et la réinstallation a résolu le problème, problème très étrange cependant.

Comment supprimer complètement node.js de Windows


En premier lieu, je n'ai pas aimé votre réponse, mais je dois avouer que la même chose m'est arrivée. La création d'un nouveau meteorprojet avec a --reactcausé ce problème, mais la suppression du projet et sa recréation fonctionnaient à nouveau (OS X).
Hola Soy Edu Feliz Navidad

1

J'ai eu ce problème avec gulp. Le problème était que gulp a ajouté une dépendance à mon fichier source et je pense que npm a essayé de l'ouvrir:

{
  "name": "name",
  "version": "2.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "appname": "file://gulp",
    "gulp-concat": "^2.6.1",
    "gulp-electron": "^0.1.3",
    "gulp-shell": "^0.5.2",
    "gulp-uglify": "^2.0.0",
    "gulp-util": "^3.0.7",
    "node-7z": "^0.4.0"
  }
}

Assurez-vous qu'il n'y a pas de références étranges dans votre fichier package.json.


1

Vérifiez que vous exécutez npm install à partir du répertoire approprié.

(Le fichier package.json peut être un répertoire supplémentaire vers le bas, par exemple.)


1

Si votre problème est associé au packager React Native. Essayez de réinitialiser le cache avec react-native start --reset-cache.


1

Dans mon cas, j'ai oublié de passer le chemin complet de l'un des fichiers qu'il demandait. Après avoir passé le chemin complet du fichier travaillé :)


1

Dans mon cas, je faisais face à ce problème lors de l' installation create-react-appdans MAC (Mojave OS)avec la commande suivante:

sudo npm install create-react-app -g

et j'ai eu des erreurs comme celle-ci:

npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/scheduler'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/symbol'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/testing'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/util'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/webSocket'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/symbol'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/testing'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/util'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/webSocket'

J'ai lu npm.community qui essaie de s'installer sans sudo:

npm install create-react-app -g

et cela a en fait résolu mon problème .. !!


1

Assurez-vous que node_modules (et votre racine package.json) ne contient pas de référence au module "package.json" de npm. La suppression de package.json FOLDER de node_modules a résolu le problème pour moi.


0

J'ai eu un problème similaire lors de la configuration du code passe-partout. Il lisait mon fichier bundle.js en tant que répertoire. Donc, comme indiqué ici. EISDIR signifie qu'il s'agit d'un répertoire et non d'un fichier. Pour résoudre le problème, j'ai supprimé le fichier et je l'ai simplement recréé (il a été créé automatiquement à l'origine). Si vous ne trouvez pas le fichier (car il est caché), utilisez simplement le terminal pour le trouver et le supprimer.


0

J'ai eu le même problème jusqu'à ce que j'essaye de supprimer le dossier .git. Ça a marché. Je suppose que ce type de problème peut avoir différentes causes.


0

J'ai eu le même problème. Il y avait un dossier lié dans mon répertoire qui causait le problème. J'ai ajouté ce dossier pour ignorer la liste, puis il a commencé à fonctionner correctement comme prévu.


0

Je sais que ce n'est pas spécifiquement poser des questions sur forever js .. mais google me conduit ici donc .. Pour moi, c'était aussi simple qu'une barre oblique de fin.

J'ai juste changé:

forever start -a -l /dev/null/ /var/www/node/my_file.js

À:

forever start -a -l /dev/null /var/www/node/my_file.js

Et l'erreur a disparu


0

Assurez-vous de vérifier votre version de npm et s'il y a des problèmes avec elle. J'avais le même problème au moment de cet article et j'ai découvert que ma version npm (6.5) avait des problèmes. J'ai dû désinstaller et réinstaller la version 6.4.1 de npm, puis tout a recommencé à fonctionner correctement.



0

Dans mon cas, ces étapes ont résolu mon problème:

  1. npmprocessus de fin(CTRL + C)
  2. suppression du dossier entier
  3. créer un nouveau
  4. courir à npmnouveau

0

Dans mon cas, j'utilise Windows 10 en espagnol et cette version mélange les noms de répertoires anglais et espagnol. Mon problème était que le répertoire du bureau porte ce nom pour certaines commandes et escritoriopour d'autres. Je crois que npm ne peut pas résoudre ce problème. Ma solution était de simplement passer à un autre répertoire à partir de C: \ différent de mon répertoire personnel.


0

J'avais fait face à un problème similaire. J'ai mis cafile en utilisant la commande:

npm config set cafile PATH_TO_CERTIFICATE

J'ai pu résoudre ce problème en supprimant les paramètres et les paramètres du fichier de certificat strict-ssl = false.


0

J'ai résolu ce problème en déplaçant mon répertoire de mon lecteur exFAT qui ne prend pas en charge les liens symboliques.

Mon lecteur exFat est partagé entre osx et une partition Windows bootcamp.Ainsi, lorsque j'ai essayé de cloner et d'installer mon projet par npm, il a échoué mais n'explique jamais que exFAT ne prend pas en charge cette fonctionnalité.

Il existe des pilotes que vous pouvez installer pour ajouter la possibilité de créer des liens symboliques, mais vous devrez effectuer une grande partie de votre configuration manuellement par rapport à l'exécution d'un simple script npm.


0

Pour mac os: s'il est installé directement depuis le site Web de nodejs, le fichier npmrc se trouvera dans / usr / local / etc / npmrc . Supprimez simplement la configuration qui n'est pas définie et ce problème serait résolu.



0

Dans mon cas, les C:\Users\{user}\AppData\local\npmfichiers étaient cachés, je n'ai donc pas pu trouver et supprimer le répertoire de problèmes. Il m'a fallu des JOURS pour le réaliser!

Donc, revérifiez pour afficher tous les dossiers afin de ne pas les manquer! Voici un lien pour le faire si vous ne savez pas comment.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.