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!

Un autreMike
la source
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.

user1460043
la source
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)
MauricioLeal
la source
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.

PeeJee
la source
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"
      ],
Rob
la source
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.

rncrtr
la source
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.

datayeah
la source
2

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

Miniwe
la source
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

Un autreMike
la source
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.

Lanklaas
la source
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.)

James Lawruk
la source
1

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

Robot amical
la source
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é :)

Rafael Paz
la source
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 .. !!

Ritesh
la source
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.

Benjamin Piette
la source
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.

Pablo DelaCruz
la source
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.

José Augusto Paiva
la source
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.

deyujjal
la source
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

Marc Alexandre
la source
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.

smoosh911
la source
0

J'ai eu un lien symbolique cassé vers node_modules dans un sous-dossier

Daniel Kukula
la source
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
BartusZak
la source
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.

JJEA
la source
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.

Prateek Porwal
la source
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.

Mat
la source
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.

Rajat Gupta
la source
0

Je viens de supprimer la ligne

.babel('resources/assets/js/app.js')

pour laravel 5.6 avec vue.js. dans webpack.mix.js

Данияр Саумбаев
la source
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.

jabarbush
la source