NPM bloccato fornendo lo stesso errore EISDIR: operazione non valida su una directory, lettura in caso di errore (nativo)


102

Sono bloccato con questo errore, indipendentemente dalla directory in cui mi trovo e da cosa digito dopo "npm" in cmd.exe. Ecco il 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 ]

Ho provato a disinstallare / reinstallare nodejs più volte, ho persino eliminato le cartelle npm e npm-cache in C: \ Users \ me \ AppData \ Roaming. Non sono sicuro di cosa sia andato storto per causare questo. Un secondo funzionava bene e ora non riesco a eliminare questo errore. La spiegazione nel registro non ha senso, poiché fornisce questo errore in qualsiasi directory. Dovrei notare che l'esecuzione di un prompt dei comandi come amministratore non dà questo errore. Mi sto tirando i capelli questo venerdì sera cercando di risolvere il problema, qualsiasi aiuto sarebbe molto apprezzato!


1
Trovo che questo errore sia comune quando le persone aggiornano npm, mi chiedo se questo errore sia iniziato quando hai aggiornato npm o se hai addirittura aggiornato?
Clavin

È un nuovo computer quindi avevo installato il nodo negli ultimi giorni. Ho appena eseguito un aggiornamento in modalità amministratore, ma non ho avuto fortuna
AnotherMike

Risposte:


61

Ho riscontrato lo stesso problema mentre stavo modificando alcune impostazioni di npm. Ho fatto un errore con un npm config setcomando e questo ha aggiunto una riga che fa riferimento a una directory inesistente in C:\Users\{User}\.npmrc. Dopo aver cancellato manualmente quella riga da .npmrc, il problema era scomparso.


1
Quanto sono idiota? Ero in una sottocartella ahahahah grazie.
Sampgun

Anch'io stavo indicando cafile su una cartella invece che su un file vero e proprio, e ogni npmcomando ha smesso di funzionare completamente, nessuna soluzione ha funzionato a parte la tua risposta, grazie!
Giorgio Tempesta

194

EISDIR sta per " Error, Is Directory ". Ciò significa che NPM sta tentando di eseguire un'operazione su un file ma è una directory . Nel tuo caso, NPM sta cercando di " leggere " un file che è una directory (riga: 4). Poiché l'operazione non può essere eseguita, viene generato l'errore.

Tre cose da assicurarsi qui.

  1. Assicurati che il file esista. In caso contrario, è necessario crearlo. (Se NPM dipende da informazioni specifiche nel file, sarà necessario disporre di tali informazioni lì).
  2. Assicurati che sia effettivamente un file e non una directory.
  3. Ha le giuste autorizzazioni. Puoi cambiare il file per avere tutti i permessi con "sudo chmod 777 FILE_NAME". (Attenzione: stai dando autorizzazioni di lettura, scrittura ed esecuzione a tutti su quel file)

13
Questa dovrebbe essere la risposta accettata imo poiché contiene informazioni sul problema e una soluzione
schu34

4
Quanto sono idiota? Ero in una sottocartella ahahahah grazie.
Sampgun

4
Ho trascorso 3 ore su questo. Avevo una cartella chiamata back-button.css. 3 ore non tornerò mai più. Grazie a te non erano 4.
Loke

1
L'ho ottenuto usando fs.writeFile, ma un errore ha impedito al mio programma di passare il FileName, quindi stava cercando di scrivere su una cartella. Grazie.
Nelles

1
È corretto. Ho riscontrato questo problema durante l'utilizzo di nodemailer in un'app desktop NW.js durante la scrittura del codice per un gestore di posta elettronica. Stavo anche cercando di leggere la directory invece di leggere un file immagine da inviare come allegato. Grazie mille.
Hygull

13

Ho avuto lo stesso problema oggi dopo aver aggiornato il mio npm dalla versione 6.4.1 alla versione 6.5.0. Ho risolto il problema scaricando il programma di installazione .pkg (consigliato per la maggior parte degli utenti) da node.js e successivamente eseguito .


Lo stesso identico metodo mi ha aiutato
DNReNTi

la mia macchina ha la stessa versione di npm installata ma sto ancora affrontando il problema
Gaurav Paliwal

9

Nel mio caso stavo ottenendo "EISDIR: operazione illegale su una directory, leggi" perché nel mio file .angular-cli.json non fornivo un percorso completo in "script:"

Ad esempio ho avuto

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

In effetti avrebbe dovuto essere

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

7

Ho avuto lo stesso problema su Mac OS X (installato con homebrew) e .npmrc non è l'unico posto in cui il nodo memorizza le variabili di configurazione. C'è un file di configurazione glocal npmrc in / usr / local / etc che devi modificare usando questo comando:

sudo nano npmrc

Rimuovi la ca=riga, o qualunque sia l'impostazione di configurazione che ha interrotto l'installazione, salva quel file e prova di nuovo npm, e dovresti vederlo funzionare.


Sono contento di aver potuto aiutare.
rncrtr

4

Questi strani errori si sono verificati di recente sulla mia macchina OSX.

Potrei aiutare me stesso in modo rapido e sporco correndo:

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

Qualcosa sembrava aver incasinato i diritti di accesso di tutti i moduli del nodo globale.


2

Per me la correzione è stata l'aggiunta di una barra dopo il nome della directory


1

Effettuare una disinstallazione completa, inclusa la rimozione dei percorsi, ecc. E reinstallare, ha risolto il problema, un problema molto strano però.

Come rimuovere completamente node.js da Windows


In primo luogo non mi è piaciuta la tua risposta, ma devo confessare che la stessa cosa è successa a me. La creazione di un nuovo meteorprogetto ha --reactcausato questo problema, ma l'eliminazione del progetto e la ricreazione di nuovo ha funzionato (OS X).
Hola Soy Edu Feliz Navidad

1

Ho avuto questo problema con gulp. Il problema era che gulp aggiungeva una dipendenza al mio file sorgente e penso che npm abbia provato ad aprirlo:

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

Assicurati che non ci siano riferimenti strani nel tuo file package.json.


1

Verificare di eseguire l'installazione di npm dalla directory corretta.

(Il file package.json potrebbe essere una directory in più in basso, ad esempio.)


1

Se il tuo problema è associato al packager React Native. Prova a ripristinare la cache con react-native start --reset-cache.


1

Nel mio caso ho dimenticato di passare il percorso completo di uno dei file che stava chiedendo. Dopo aver passato il percorso completo del file ha funzionato :)


1

Nel mio caso, stavo affrontando questo problema durante l'installazione create-react-appin MAC (Mojave OS)con i seguenti comandi:

sudo npm install create-react-app -g

e ho ricevuto errori come questo:

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'

Ho letto npm.community che tenta di installare senza sudo:

npm install create-react-app -g

e in realtà ha risolto il mio problema .. !!


1

Assicurati che node_modules (e il tuo pacchetto root.json) non contenga un riferimento al modulo "package.json" di npm. L'eliminazione della CARTELLA package.json da node_modules ha risolto il problema per me.


0

Ho avuto un problema simile durante l'impostazione del codice boilerplate. Stava leggendo il mio file bundle.js come directory. Quindi, come affermato qui. EISDIR significa che è una directory e non un file. Per risolvere il problema, ho eliminato il file e l'ho appena ricreato (originariamente era stato creato automaticamente). Se non riesci a trovare il file (perché è nascosto), usa semplicemente il terminale per trovarlo ed eliminarlo.


0

Ho avuto lo stesso problema fino a quando non ho provato a eliminare la cartella .git. Ha funzionato. Immagino che questo tipo di problema possa avere cause diverse.


0

Ho avuto lo stesso problema. C'era una cartella collegata nella mia directory che stava causando il problema. ho aggiunto quella cartella per ignorare l'elenco e poi ha iniziato a funzionare bene come previsto.


0

So che questo non sta chiedendo specificamente di forever js .. ma google mi ha portato qui quindi .. Per me è stato semplice come una barra finale.

Ho appena cambiato:

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

Per:

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

E l'errore è scomparso


0

Assicurati di controllare la tua versione di npm e se ci sono problemi con essa. Stavo avendo lo stesso problema al momento di questo post e ho scoperto che la mia versione npm (6.5) aveva problemi. Ho dovuto disinstallare e reinstallare la versione 6.4.1 di npm e poi tutto ha ripreso a funzionare alla grande.


0

Ho avuto un collegamento simbolico interrotto a node_modules in una sottocartella


0

Nel mio caso questi passaggi hanno risolto il mio problema:

  1. npmprocesso di terminazione(CTRL + C)
  2. l'eliminazione dell'intera cartella
  3. creandone uno nuovo
  4. di npmnuovo in esecuzione

0

Nel mio caso, sto usando Windows 10 in spagnolo e questa versione combina nomi di directory in inglese e spagnolo. Il mio problema era che la directory del desktop ha questo nome per alcuni comandi e escritorioper altri. Credo che npm non possa risolvere questo problema. La mia soluzione era semplicemente passare a un'altra directory partendo da C: \ diversa dalla mia home directory.


0

Avevo affrontato un problema simile. Ho impostato cafile usando il comando:

npm config set cafile PATH_TO_CERTIFICATE

Sono stato in grado di risolvere questo problema eliminando le impostazioni del file del certificato e l'impostazione strict-ssl = false.


0

Ho risolto questo problema spostando la mia directory dall'unità exFAT che non supporta il collegamento simbolico.

La mia unità exFat è condivisa tra osx e una partizione Windows bootcamp, quindi quando ho provato a clonare e installare npm il mio progetto non funzionava ma non spiega mai che exFAT non supporta questa funzionalità.

Ci sono driver là fuori che puoi installare per aggiungere la possibilità di collegamento simbolico, ma dovrai fare molte delle tue impostazioni manualmente rispetto all'esecuzione di un semplice script npm.


0

Per mac os: se installato direttamente dal sito web di nodejs, il file npmrc si troverà in / usr / local / etc / npmrc . Basta eliminare la configurazione che non è definita e questo problema verrà risolto.



0

Nel mio caso, il file C:\Users\{user}\AppData\local\npm file erano nascosti, quindi non sono stato in grado di trovare ed eliminare la directory dei problemi. Mi ci sono voluti GIORNI per rendermene conto!

Quindi ricontrolla per non nascondere le cartelle in modo da non perderle! Ecco un link per farlo se non sai come.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.