NPM steckt fest und gibt den gleichen Fehler aus EISDIR: Unzulässiger Vorgang in einem Verzeichnis, bei Fehler gelesen (nativ)

102

Ich bin mit diesem Fehler festgefahren, egal in welchem ​​Verzeichnis ich mich befinde und was ich nach "npm" in cmd.exe eingebe. Hier ist das 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 ]

Ich habe mehrmals versucht, nodejs zu deinstallieren / neu zu installieren. Ich habe sogar die Ordner npm und npm-cache in C: \ Users \ me \ AppData \ Roaming gelöscht. Ich bin mir nicht sicher, was schief gelaufen ist, um dies zu verursachen. Eine Sekunde hat es gut funktioniert, und jetzt kann ich diesen Fehler nicht mehr loswerden. Die Erklärung im Protokoll ist nicht sinnvoll, da dieser Fehler in jedem Verzeichnis angezeigt wird. Ich sollte beachten, dass das Ausführen einer Eingabeaufforderung als Administrator diesen Fehler nicht ausgibt. Ich ziehe mir an diesem Freitagabend die Haare aus, um das Problem zu beheben. Jede Hilfe wäre sehr dankbar!

AnotherMike
quelle
1
Ich stelle fest, dass dieser Fehler häufig auftritt, wenn Benutzer npm aktualisieren. Ich frage mich, ob dieser Fehler beim Aktualisieren von npm aufgetreten ist oder ob Sie überhaupt aktualisiert haben.
Clavin
Es ist ein neuer Computer, also hatte ich in den letzten Tagen einen Knoten installiert. Ich habe gerade ein Update im Adminstrator-Modus gemacht, aber kein Glück
AnotherMike

Antworten:

60

Ich bin auf dasselbe Problem gestoßen, als ich einige npm-Einstellungen geändert habe. Ich habe mit einem npm config setBefehl einen Fehler gemacht und dabei eine Zeile hinzugefügt, die auf ein nicht vorhandenes Verzeichnis verweist C:\Users\{User}\.npmrc. Nachdem ich diese Zeile manuell gelöscht hatte, .npmrcwar das Problem behoben.

user1460043
quelle
1
Wie idiotisch bin ich? Ich war in einem Unterordner ahahahah danke.
Sampgun
Ich habe auch cafile auf einen Ordner anstatt auf eine tatsächliche Datei gezeigt, und jeder npmBefehl hat nicht mehr vollständig funktioniert. Abgesehen von Ihrer Antwort hat keine Lösung funktioniert, danke!
Giorgio Tempesta
194

EISDIR steht für " Error, Is Directory ". Dies bedeutet, dass NPM versucht, etwas mit einer Datei zu tun, aber es ist ein Verzeichnis . In Ihrem Fall versucht NPM, eine Datei zu " lesen ", die ein Verzeichnis ist (Zeile: 4). Da die Operation nicht ausgeführt werden kann, wird der Fehler ausgelöst.

Drei Dinge, die Sie hier sicherstellen sollten.

  1. Stellen Sie sicher, dass die Datei vorhanden ist. Wenn dies nicht der Fall ist, müssen Sie es erstellen. (Wenn NPM von bestimmten Informationen in der Datei abhängt, müssen Sie diese Informationen dort haben.)
  2. Stellen Sie sicher, dass es sich tatsächlich um eine Datei und nicht um ein Verzeichnis handelt.
  3. Es hat die richtigen Berechtigungen. Sie können die Datei so ändern, dass sie alle Berechtigungen mit "sudo chmod 777 FILE_NAME" hat. (Achtung: Sie erteilen jedem in dieser Datei Lese-, Schreib- und Ausführungsberechtigungen.)
MauricioLeal
quelle
13
Dies sollte die akzeptierte Antwort sein, da sie Informationen über das Problem sowie eine Lösung enthält
schu34
4
Wie idiotisch bin ich? Ich war in einem Unterordner ahahahah danke.
Sampgun
3
Verbrachte 3 Stunden damit. Ich hatte einen Ordner namens back-button.css. 3 Stunden komme ich nie zurück. Dank dir war es nicht 4.
Loke
1
Ich habe dies mit fs.writeFile erhalten - aber ein Fehler hat mein Programm daran gehindert, den Dateinamen zu übergeben, sodass es versucht hat, in einen Ordner zu schreiben. Vielen Dank.
Nelles
1
Das ist richtig. Dieses Problem trat auf, als ich nodemailer in einer NW.js- Desktop-App verwendete, während ich Code für einen E-Mail-Manager schrieb. Ich habe auch versucht, das Verzeichnis zu lesen, anstatt eine Bilddatei zu lesen, die als Anhang gesendet werden soll. Vielen Dank.
Hygull
13

Hatte heute das gleiche Problem, nachdem ich mein npm von Version 6.4.1 auf Version 6.5.0 aktualisiert habe. Ich habe dies behoben, indem ich das (für die meisten Benutzer empfohlene .pkg-Installationsprogramm) von node.js heruntergeladen und anschließend ausgeführt habe.

PeeJee
quelle
Die genau gleiche Methode hat mir geholfen
DNReNTi
Auf meinem Computer ist dieselbe npm-Version installiert, aber ich
stehe
9

In meinem Fall wurde "EISDIR: Unzulässige Operation für ein Verzeichnis, gelesen" angezeigt, da ich in meiner Datei ".angular-cli.json" keinen vollständigen Pfad in "scripts:" angegeben habe.

Zum Beispiel hatte ich

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

Eigentlich hätte es so sein sollen

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

Ich hatte das gleiche Problem unter Mac OS X (installiert mit Homebrew), und .npmrc ist nicht der einzige Ort, an dem Knoten Konfigurationsvariablen gespeichert sind. In / usr / local / etc befindet sich eine glokale npmrc-Konfigurationsdatei, die Sie mit diesem Befehl bearbeiten müssen:

sudo nano npmrc

Entfernen Sie die ca=Zeile oder die Konfigurationseinstellung, die Ihre Installation unterbrochen hat, speichern Sie diese Datei und versuchen Sie es erneut mit npm. Sie sollten sehen, dass sie funktioniert.

rncrtr
quelle
Froh, dass ich helfen konnte.
rncrtr
4

Diese seltsamen Fehler sind kürzlich auf meinem OSX-Computer aufgetreten.

Ich könnte mir schnell und schmutzig helfen, indem ich renne:

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

Etwas schien die Zugriffsrechte aller globalen Knotenmodule durcheinander gebracht zu haben.

datayeah
quelle
2

Für mich war das Fixieren ein Schrägstrich nach dem Verzeichnisnamen

Miniwe
quelle
1

Eine vollständige Deinstallation, einschließlich Entfernen von Pfaden usw. und Neuinstallation, hat das Problem gelöst, allerdings ein sehr seltsames Problem.

So entfernen Sie node.js vollständig aus Windows

AnotherMike
quelle
Erstens hat mir Ihre Antwort nicht gefallen, aber ich muss gestehen, dass mir dasselbe passiert ist. Das Erstellen eines neuen meteorProjekts mit --reacthat dieses Problem verursacht, aber das Löschen und erneute Erstellen des Projekts hat funktioniert (OS X).
Hola Soja Edu Feliz Navidad
1

Ich hatte dieses Problem mit Schlucken. Das Problem war, dass gulp meiner Quelldatei eine Abhängigkeit hinzugefügt hat und ich denke, npm hat versucht, sie zu öffnen:

{
  "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"
  }
}

Stellen Sie sicher, dass Ihre Datei package.json keine seltsamen Verweise enthält.

Lanklaas
quelle
1

Stellen Sie sicher, dass Sie npm install aus dem richtigen Verzeichnis ausführen.

(Die Datei package.json kann beispielsweise ein zusätzliches Verzeichnis sein.)

James Lawruk
quelle
1

Wenn Ihr Problem mit dem React Native-Packager zusammenhängt. Versuchen Sie, den Cache mit zurückzusetzen react-native start --reset-cache.

Freundlicher Roboter
quelle
1

In meinem Fall habe ich vergessen, den vollständigen Pfad einer der angeforderten Dateien zu übergeben. Nach dem Übergeben hat der vollständige Pfad der Datei funktioniert :)

Rafael Paz
quelle
1

In meinem Fall war mit Blick auf ich dieses Problem bei der Installation create-react-appin MAC (Mojave OS)mit folgendem Befehl ein :

sudo npm install create-react-app -g

und bekam Fehler wie diesen:

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'

Ich habe npm.community gelesen , die versuchen, ohne zu installieren sudo:

npm install create-react-app -g

und es hat tatsächlich mein Problem gelöst .. !!

Ritesh
quelle
1

Stellen Sie sicher, dass node_modules (und Ihr root package.json) keinen Verweis auf das Modul "package.json" von npm enthalten. Das Löschen von package.json FOLDER aus node_modules hat das Problem für mich gelöst.

Benjamin Piette
quelle
0

Ich hatte ein ähnliches Problem beim Einrichten des Boilerplate-Codes. Es wurde meine Datei bundle.js als Verzeichnis gelesen. Also wie hier angegeben. EISDIR bedeutet, dass es sich um ein Verzeichnis und nicht um eine Datei handelt. Um das Problem zu beheben, habe ich die Datei gelöscht und neu erstellt (sie wurde ursprünglich automatisch erstellt). Wenn Sie die Datei nicht finden können (weil sie versteckt ist), verwenden Sie einfach das Terminal, um sie zu finden und zu löschen.

Pablo DelaCruz
quelle
0

Hatte das gleiche Problem, bis ich versuchte, den .git-Ordner zu löschen. Es funktionierte. Ich denke, diese Art von Problem kann verschiedene Ursachen haben.

José Augusto Paiva
quelle
0

Ich hatte das gleiche Problem. In meinem Verzeichnis befand sich ein verknüpfter Ordner, der das Problem verursachte. Ich habe diesen Ordner hinzugefügt, um die Liste zu ignorieren, und dann hat er wie erwartet funktioniert.

deyujjal
quelle
0

Ich weiß, dass dies nicht speziell nach ewigen Fragen fragt. Aber Google hat mich hierher geführt. Für mich war es so einfach wie ein abschließender Schrägstrich.

Ich habe mich gerade geändert:

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

Zu:

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

Und der Fehler verschwand

Marc Alexander
quelle
0

Stellen Sie sicher, dass Sie Ihre Version von npm überprüfen und prüfen, ob Probleme damit vorliegen. Ich hatte zum Zeitpunkt dieses Beitrags das gleiche Problem und stellte fest, dass meine npm-Version (6.5) Probleme hatte. Ich musste npm Version 6.4.1 deinstallieren und neu installieren und dann fing alles wieder an, großartig zu funktionieren.

smoosh911
quelle
0

Ich hatte einen fehlerhaften Symlink zu node_modules in einem Unterordner

Daniel Kukula
quelle
0

In meinem Fall haben diese Schritte mein Problem gelöst:

  1. npmProzess beenden(CTRL + C)
  2. gesamten Ordner löschen
  3. neue erstellen
  4. läuft npmwieder
BartusZak
quelle
0

In meinem Fall verwende ich Windows 10 auf Spanisch und diese Version mischt englische und spanische Verzeichnisnamen. Mein Problem war, dass das Desktop-Verzeichnis diesen Namen für einige Befehle und escritoriofür andere hat. Ich glaube, dass npm dies nicht lösen kann. Meine Lösung bestand darin, einfach von C: \ in ein anderes Verzeichnis zu wechseln, das sich von meinem Ausgangsverzeichnis unterscheidet.

JJEA
quelle
0

Ich hatte ein ähnliches Problem. Ich setze cafile mit dem Befehl:

npm config set cafile PATH_TO_CERTIFICATE

Ich konnte dies beheben, indem ich die Einstellungen für die Zertifikatdatei und die Einstellungen löschte strict-ssl = false.

Prateek Porwal
quelle
0

Ich habe dieses Problem behoben, indem ich mein Verzeichnis von meinem exFAT-Laufwerk verschoben habe, das kein Symlinking unterstützt.

Mein exFat-Laufwerk wird von osx und einer Bootcamp-Windows-Partition gemeinsam genutzt. Als ich versuchte, mein Projekt zu klonen und npm zu installieren, schlug dies fehl, erklärt jedoch nie, dass exFAT diese Funktionalität nicht unterstützt.

Es gibt Treiber, die Sie installieren können, um die Symlink-Funktion zu erweitern. Sie müssen jedoch einen Großteil Ihrer Einrichtung manuell vornehmen, anstatt ein einfaches npm-Skript auszuführen.

Matt
quelle
0

Für Mac OS: Bei direkter Installation von der NodeJS-Website befindet sich die npmrc-Datei in / usr / local / etc / npmrc . Löschen Sie einfach die undefinierte Konfiguration und dieses Problem wird behoben.

Rajat Gupta
quelle
0

Ich habe gerade die Leitung entfernt

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

für laravel 5.6 mit vue.js. in webpack.mix.js

Данияр Саумбаев
quelle
0

In meinem Fall wurden die C:\Users\{user}\AppData\local\npmDateien ausgeblendet, sodass ich das Fehlerverzeichnis nicht finden und löschen konnte. Ich habe TAGE gebraucht, um das zu realisieren!

Überprüfen Sie also alle Ordner, damit Sie sie nicht verpassen! Hier ist ein Link , um dies zu tun, wenn Sie nicht wissen, wie.

Jabarbush
quelle