Errori di installazione di npm con errore: ENOENT, chmod


128

Sto cercando di installare globalmente un modulo npm che ho appena pubblicato. Ogni volta che provo a eseguire l'installazione, da npm o dalla cartella, ottengo questo errore.

npm ERR! Error: ENOENT, chmod '/usr/local/lib/node_modules/takeapeek/lib/cmd.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 3.8.0-19-generic
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "takeapeek"
npm ERR! cwd /home/giodamlio
npm ERR! node -v v0.10.6
npm ERR! npm -v 1.3.6
npm ERR! path /usr/local/lib/node_modules/takeapeek/lib/cmd.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/giodamlio/npm-debug.log
npm ERR! not ok code 0

Sto usando sudo e ho controllato tre volte tutto nel pacchetto, tutto dovrebbe funzionare. Ho cercato in giro e ho visto un paio di casi similer nessuno dei quali è stato risolto. Ecco cosa ho provato.

  • Aggiorna npm ( sudo npm install -g npm)
  • Cancella la cache npm globale ( sudo npm cache clear)
  • Cancella la cache npm dell'utente ( npm cache clear)

Ho notato che l'errore aveva a che fare con il file che sto collegando al percorso, in particolare quando npm ha provato a fare un chmod. Questo non dovrebbe essere un problema, my lib/cli.jsha i permessi normali e npm ha i permessi di superutente durante questa installazione.

Dopo aver esaminato i documenti di npm ho trovato un'opzione che avrebbe impedito a npm di creare i collegamenti bin ( --no-bin-links), quando ho provato l'installazione con esso, ha funzionato bene.

Allora qual è il problema? È questo uno strano bug di frangia che non ha ancora una soluzione?

Modifica: per riferimento, ecco il modulo che ho caricato


il tuo pacchetto utilizza node-gyp? Penso che la chiamata no-bin-links sia correlata in tal caso.
jcollum

No, nessun codice nativo nel modulo. Ecco la fonte del modulo per riferimento.
giodamelio

1
Il --no-bin-linkssolo interrompe npm dal collegamento simbolico ai file nell'hash di package.json binal percorso durante l'installazione globale.
giodamelio

Argh, l'ho già incontrato prima, ma non ricordo perché ... ti farà sapere se mi viene in mente.
jcollum

@jcollum Grazie, è davvero frustrante, ho controllato tutto un miliardo di volte, ma ancora non posso fare a meno di sentire che mi sono perso qualcosa di stupido e semplice. O forse è uno strano bug.
giodamelio

Risposte:


133

Ok, sembra che NPM stia usando il tuo .gitignorecome base per il .npmignorefile e quindi ignori /lib. Se aggiungi un .npmignorefile vuoto nella radice della tua applicazione, tutto dovrebbe funzionare.

[modifica] - maggiori informazioni su questo comportamento qui: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package


Dannazione, deve essere così. Sembra un modo un po 'confuso di fare le cose. Non al computer adesso, ma lo proverò tra poche ore.
giodamelio

3
3 ore di frustrazione si sono ridotte a una riga nel mio .gitignore che stava facendo impazzire l'installazione di npm -g. Insane.
bryan

2
'digita NUL> .npmignore' per Windows
Kabir

1
A partire da npm @ 5, la cache npm si risolve automaticamente dai problemi di danneggiamento e viene garantita la validità dei dati estratti dalla cache. Se vuoi assicurarti che tutto sia coerente, usa invece "npm cache verify".
Abhijeet

1
rimuovere il file package-lock.json
FennRussel

107

Ho riscontrato un problema simile,

npm cache clean

risolto.


11
Ho provato npm cache verifye ha funzionato. grazie per il suggerimento.
Jaikrat

A partire da npm @ 5, la cache npm si risolve automaticamente dai problemi di danneggiamento e viene garantita la validità dei dati estratti dalla cache. Se vuoi assicurarti che tutto sia coerente, usa invece "npm cache verify". D'altra parte, se stai eseguendo il debug di un problema con il programma di installazione, puoi npm install --cache /tmp/empty-cacheutilizzare una cache temporanea invece di distruggere quella effettiva.
Daniel ZA,

9

Questo problema in qualche modo è sorto per me su Mac quando stavo cercando di eseguire npm install -g bower. Mi dava una serie di errori per non essere in grado di trovare cose come graceful-fs. Non sono sicuro di come ho installato npm originariamente, ma sembra che forse sia venuto giù con il nodo usando homebrew. Prima ho corso

brew uninstall node

Questo ha rimosso entrambi nodee npmdal mio percorso. Da lì l'ho appena reinstallato

brew install node

Quando ha completato ho avuto nodee npmsul mio percorso e sono stato in grado di correre

rm -rf ~/.npm
npm install -g bower

Questo pergola quindi installato con successo.

L'aggiornamento delle formule di infusione e l'aggiornamento delle installazioni non sembra funzionare per me, non sono sicuro del perché. La rimozione della .npmcartella era qualcosa che aveva funzionato per altre persone e l'avevo provata senza successo. L'ho fatto questa volta per ogni evenienza. Nota anche che nessuna delle seguenti soluzioni ha risolto il problema per me, sebbene lo abbia fatto per altri:

npm cache clean
sudo npm cache clean

9

Ho ricevuto questo errore durante l'installazione di npm e l'aggiunta di .npmignore non lo ha risolto.

Errore: ENOENT, stat "C: \ Users \ My-UserName \ AppData \ Roaming \ npm"

Ho provato ad andare alla cartella menzionata e non esisteva. L'errore è stato corretto quando ho creato la cartella npm nella cartella Roaming .

Questo è su Windows 8.1


4

Ho avuto lo stesso problema e ho appena trovato un trattamento non menzionato qui. Anche se contribuirei alla comunità:

npm install -g myappnon stava copiando la bindirectory. Ho scoperto che ciò è dovuto al fatto che non l'ho incluso filesnel filepackage.json

"files": [
  "lib",
  "bin" // this was missing
]

Ho lo stesso problema e questa risposta è stata l'unica buona soluzione per me. Il motivo era che avevo la fileschiave nel mio package.jsoncon alcune voci come index.jse LICENSE, ma non la bincartella. Quindi funziona se non c'è alcuna fileschiave o se c'è una fileschiave E la bincartella in.
Rémi Becheras

Grazie, questo mi ha aiutato a sbloccarmi. Una volta che hai fatto notare che la directory bin non era inclusa nei file, ho pensato "oh! Ovviamente!". Quindi sono tornato alla documentazione per vedere se mi mancava e non è menzionato (almeno non nel post del blog di npm che stavo leggendo). Almeno non sono pazzo: P. Grazie per l'aiuto!
Chris Schmitz

4

Ho ricevuto un errore simile su npm installun'installazione locale:

npm ERR! enoent ENOENT: no such file or directory, stat '[path/to/local/installation]/node_modules/grunt-contrib-jst'

Non sono sicuro di cosa stesse causando l'errore, ma di recente avevo installato un paio di nuovi moduli del nodo localmente, aggiornato il nodo con homebrew ed eseguito "npm update -g".

L'unico modo in cui sono stato in grado di risolvere il problema era eliminare completamente la directory locale node_modules ed eseguire di npm installnuovo:

cd [path/to/local/installation]
npm rm -rdf node_modules
npm install

4

Ho un problema simile in particolare: ERR! enoent ENOENT: nessun file o directory di questo tipo, chmod 'node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / sshpk / bin / sshpk-conv Ho provato tutte le soluzioni precedenti ma senza fortuna. Stavo usando vagrant box e il progetto era in una cartella condivisa. I problemi sembrano essere solo lì, quando sposto il progetto in un'altra cartella non condivisa (woth host), voilà! problema risolto. Nel caso in cui un'altra persona stesse usando anche vagabondo


Mi hai svegliato da un incubo, tnx! Ho 2 aggiunte: 1.) Smetti di usare npm, usa Yarn. 2.) Esegui npm dalla tua macchina HOST e non dalla VM.
Flip Vernooij

3

Ho ricevuto un messaggio di errore simile durante il tentativo di npm installun gruppo di dipendenze. Si scopre che alcuni di loro non si installano su Debian / Ubuntu perché si aspettano /usr/bin/nodedi essere il nodo eseguibile. Per risolvere, devi farlo

sudo ln -s nodejs /usr/bin/node 

o meglio ancora,

sudo apt-get install nodejs-legacy

Per maggiori informazioni: https://stackoverflow.com/a/21171188/7581


3

Ho riscontrato un comportamento simile dopo l'aggiornamento a npm 6.1.0. Sembrava funzionare una volta, ma poi sono entrato in uno stato con questo errore durante il tentativo di installare un pacchetto specificato dal percorso sul filesystem:

npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename

Le seguenti cose non hanno risolto il problema :

  • rm -rf node_modules
  • npm cache clean(ha dato npm ERR! As of npm@5, the npm cache self-heals.... use 'npm cache verify' instead.)
  • npm cache verify
  • rm -rf ~/.npm

Come ho risolto il problema :

  • rm package-lock.json

2

Penso che il tuo script per il caffè compilato non sia presente nel pacchetto npm pubblicato. Prova a scrivere un comando di pre-pubblicazione .


No, la cartella lib era lì quando l'ho pubblicata. Inoltre, ottengo lo stesso errore quando provo a eseguire l'installazione dalla cartella locale. Anche quando la cartella lib è presente.
giodamelio

1
@giodamelio sono d'accordo con ryan su questo. L'errore sta dicendo takeapeek/lib/cmd.jsche non esiste. Anche se la cartella lib potrebbe essere "lì" quando pubblichi, non sarà "lì" quando installi tramite npm a meno che non faccia parte del repository, oa meno che tu non usi la prepubblicazione per crearla.
badsyntax

2

Nel mio caso (codice multiplo ENOENT errno 34) il problema era con l' ~/.npm/accesso alla directory. Al suo interno c'erano alcune sottodirectory con root:rootdiritti, che stavano causando problemi mentre eseguivo i comandi come utente normale (senza sudo). Quindi ho cambiato la proprietà di tutte le sottocartelle e i file all'interno di ~/.npm/dir nel mio utente e gruppo locale. Questo ha funzionato sul mio Ubuntu (dovrebbe funzionare anche su Mac).

$ sudo chown yourusername.yourgroupname ~/.npm/ -R

Dovresti conoscere il tuo nome utente, giusto? In caso $ whoamicontrario, esegui e sostituisci anche il nome del tuo gruppo, in questo modo:

$ sudo chown johnb.johnb ~/.npm/ -R

MODIFICARE:

Scenario di test :

Dal mio account locale /home/johnbho installato npm a livello globale un generatore per yeoman, in questo modo:

$ sudo npm install -g generator-laravel

Natura del problema :

L'azione precedente ha causato l'installazione di alcune dipendenze all'interno di ~/.npm/dir, con root:rootproprietà (a causa di sudo ...). Evidentemente npm non viene eseguito come utente locale (o modifica la proprietà delle sottodirectory delle dipendenze in seguito) quando si estraggono le dipendenze e le si scrive in una sottodirectory dell'utente locale ~/.npm/. Finché npm sarebbe così incurante di problemi di sicurezza fondamentali del filesystem unix, il problema si ripresenterebbe.

Soluzione :

  1. Controlla continuamente se ~/.npm/contiene sottodirectory con proprietà (e / o autorizzazioni) diverse dal tuo account utente locale, specialmente quando installi o aggiorni qualcosa con sodo(root). In tal caso, modificare la proprietà all'interno ~/.npm/in un utente locale in modo ricorsivo.

  2. Chiedere alla npm, bower, grunt, ...comunità di affrontare questo problema come l'ho descritto sopra.


2

Ho ricevuto questo errore durante il tentativo di installare un plugin grugnito. ho scoperto di avere una versione obsoleta di npm e l'errore è andato via dopo aver aggiornato npm all'ultima versione

npm install -g npm

1

Ho provato tutte le cose che ho trovato in rete ( npm cache cleare rm -rf ~/.npm), ma niente sembra funzionare. Ciò che ha risolto il problema è stato l'aggiornamento di node (e npm) all'ultima versione. Prova questo.


1

In Windows ho avuto un errore simile. Cerca incolla i dati dell'app e cerca la stringa npm.

Ho sostituito la stringa 'npm'(comprese le virgolette) con 'npm.cmd'sia atlasboard\lib\package-dependency-manager.jse atlasboard\lib\cli\commands.js. Questo ha risolto il problema.


1

Lo stesso errore durante l'installazione globale ( npm install -g mymodule) per il pacchetto con uno script inesistente.

In package.json:

    ...
    "bin": {
      "module": "./bin/module"
    },
    ...

Ma il ./bin/modulenon esisteva, come veniva chiamato modulejs.



1

Puoi ricevere questo errore se anche il tuo node.js è danneggiato in qualche modo. Ho corretto questo errore disinstallando / riavviando / installando node.js completamente e ha risolto questo errore, insieme agli altri tre errori misteriosi che vengono generati.


1

Fai attenzione ai valori non validi per le chiavi "directory" e "file" in package.json

Se si avvia con una nuova applicazione e si desidera iniziare completamente vuota, è necessario avviare in una cartella completamente vuota o contenere un file package.json valido.

Se non vuoi creare prima un file package.json, digita semplicemente: npm i some_package

Il pacchetto con il nome "some_package" dovrebbe essere installato correttamente in una nuova sottocartella "node_modules".

Se crei prima un file package.json, digita: npm init Keep all the defaults (semplicemente facendo clic su ENTER), dovresti ottenere un file valido.

Dovrebbe sembrare come questo:

{
  "name": "yourfoldername",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Notare che mancano le seguenti chiavi: " directory ", " repository " e " file ". Sembra che se utilizzi valori errati per " directory " e / o " file ", non sei in grado di installare il pacchetto. Lasciando fuori queste chiavi, ho risolto il problema per me.

Nota anche la chiave " principale ". Questo è presente, ma contiene un valore non valido. Nessun file "index.js" esiste (ancora). Puoi rimuoverlo in sicurezza.

Ora digita: npm i some_package e il pacchetto con il nome "some_package" dovrebbe essere installato correttamente in una nuova sottocartella "node_modules".


1

Ho provato quasi tutto, poi finalmente questo:

Rimuovi semplicemente node_modules e poi esegui di 'npm install'nuovo


0

Ho avuto un problema simile con una causa diversa: il yo nodegeneratore si era aggiunto "files": ["lib/"]al mio package.jsone poiché il mio cli.jsera fuori dalla lib/directory, veniva saltato durante la pubblicazione su npm.

(Il problema di Yeoman su https://github.com/yeoman/generator-node/issues/63 dovrebbe essere risolto a breve.)


0

Ricevo l'errore "Errore: ENOENT, stat" C: \ Users \ userName \ AppData \ Roaming \ npm ". Ma non esisteva tale directory. Creata la directory e l'installazione di npm ha iniziato a funzionare


0

Di recente ho aggiornato al nodo 4.2.1 su una macchina Windows 7 x64. Quando corri

npm install -g bower

Ho ricevuto un errore simile:

npm ERR! enoent ENOENT: nessun file o directory di questo tipo, apri 'C: \ Users \ THE_USERNAME \ AppData \ Local \ Temp \ npm-THE_HASH'

Pensando che fosse correlato al percorso AppData, ci ho giocato

npm config edit

e

npm config edit --global

per modificare i campi prefisso, cache e tmp ma ha ricevuto lo stesso errore con i nuovi percorsi:

npm ERR! enoent ENOENT: nessun file o directory di questo tipo, apri 'C: \ Users \ THE_USERNAME \ npm-temp \ npm-THE_HASH'

Tutti i comandi venivano eseguiti come amministratore, quindi avevo le autorizzazioni complete.

Poi ho pensato che ci fossero alcuni problemi con i file esistenti, quindi ho eseguito:

npm cache clean

Ma ha ottenuto lo stesso errore. Tuttavia, c'erano ancora alcuni file temporanei in giro. La rimozione manuale di tutti i dati temporanei con cygwin ha finalmente risolto il problema per me:

rm -rf bower bower.cmd node_modules etc

Se hai solo Windows cmd, potresti usare qualcosa di simile

rmdir /S THE_TEMP_DIR

per rimuovere tutte le sottodirectory (sebbene se si hanno dipendenze di nodi profondamente nidificate, questo è notoriamente problematico)

Quindi, forse ci sono alcuni problemi con l'aggiornamento di npm e con le versioni di bower o altri pacchetti in giro. Nel mio caso questo sembrava essere il problema


0

Durante l'installazione di ionic ho ricevuto l'errore di seguito

115648 errore enoent ENOENT: nessun file o directory di questo tipo, rinomina 'C: \ Users \ UserName \ AppData \ Roaming \ npm \ node_modules.staging \ ansi-b11f0c4b' -> 'C: \ Users \ UserName \ AppData \ Roaming \ npm \ node_modules \ ionica \ node_modules \ Cordova-lib \ node_modules \ ansi'

Non c'era nessuna cartella chiamata ansiin quel percorso. L'ho creato lì e si è installato correttamente.


0

Se hai provato a "fare installazione" nella directory del tuo progetto con questo errore puoi provarlo:

rm -rf ./node_modules
npm cache clear
npm remove sails

allora puoi provare a "fare installazione"

Se hai "npm ERR! Enoent ENOENT: no such file or directory, chmod '... / djam-backend / node_modules / js-beautify / js / bin / css-beautify.js'", puoi provare a installare qualche versione precedente di js-beautify, altri commenti: https://github.com/beautify-web/js-beautify/issues/1247

"dependencies": {
  ...
  "js-beautify": "1.6.14"
  ...
}

e la corsa "make install". Sembra che funzioni nel caso in cui non si abbiano altre dipendenze che richiedono una versione superiore (1.7.0), in questo caso è necessario eseguire il downgrade di questi pacchetti anche nel packages.json.

o


0

Nessuno dei precedenti ha funzionato per me. Ma ha yarn installfunzionato, poi ha npm iiniziato a lavorare. Non sono sicuro di quale filo sia stato riparato, ma soluzione semplice e veloce!


0

Prima fallo

 npm rm -rdf node_modules

Quindi fa

npm install

Dopo di che installa tutti i file che vuoi aggiungere


0

Si è verificato un errore simile con npm in un contenitore Docker per webpack. Il problema è stato causato dall'argomento della riga di comando --user di docker run, perché l'utente e il gruppo specificato lì dentro hanno in qualche modo incasinato i diritti sul volume locale. Spero che questo aiuti qualcuno :)


-3
Creating a new React app in C:\Users\CM\Downloads\react\github-profile.
Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts...

npm ERR! path C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 

v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1fa335b1
0893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93d00f806

npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall lstat
npm ERR! Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996
b1fa335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec6
5545008a3cad93d00f806'
npm ERR! { [Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1f 
a335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec6554500
8a3cad93d00f806']

npm ERR! cause:
npm ERR! { Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1
fa335b10893d67f7339e4 
af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93d00f806'
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'lstat',
npm ERR! path:
npm ERR! 'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 


npm ERR! stack:
npm ERR! 'Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996
b1fa335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015
eec65545008a3cad93d00f806'',
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'lstat',
npm ERR! path:
npm ERR! 'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1fa335
b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93
d00f806',
npm ERR! parent: 'postcss-image-set-function' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a
text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double- 
check thenpm ERR! permissions of the file and its containing directories, or 
try  running

npm ERR! the command again as root/Administrator (though this is not 
recommended).
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\CM\AppData\Roaming\npm-cache_logs\2019-03-22T10_
27_19_722Z-debug.log


Aborting installation.
npm install --save --save-exact --loglevel error react react-dom react- 
scripts   has failed.

Deleting generated file... node_modules
Deleting generated file... package.json
Deleting GitHub-profile/ from C:\Users\CM\Downloads\reactDone.``

stavo affrontando un errore simile ma ho provato a eseguire il comando create-react-app molte volte e alla fine è stato creato, questo era il problema con la mia connessione Internet. controlla la tua connessione Internet


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.