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!


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.


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.)

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.


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"
      ],

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.


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.


2

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


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


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.


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.)


1

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


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 :)


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 .. !!


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.


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.


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.


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.


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


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.



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

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.


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.


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.


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.



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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.