NPM atascado dando el mismo error EISDIR: operación ilegal en un directorio, leer en error (nativo)

102

Estoy atascado con este error sin importar en qué directorio esté y lo que escriba después de "npm" en cmd.exe. Aquí está el 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 ]

He intentado desinstalar / reinstalar nodejs varias veces, incluso eliminé las carpetas npm y npm-cache en C: \ Users \ me \ AppData \ Roaming. No estoy seguro de qué salió mal para causar esto. Un segundo funcionó bien y ahora no puedo deshacerme de este error. La explicación en el registro no tiene sentido, ya que da este error en cualquier directorio. Debo señalar que ejecutar un símbolo del sistema como administrador no produce este error. Me estoy tirando de los pelos este viernes por la noche tratando de arreglar esto, ¡cualquier ayuda sería muy apreciada!

Otro Mike
fuente
1
Me parece que este error es común cuando las personas actualizan npm, me pregunto si este error comenzó cuando actualizó npm, o si incluso actualizó en absoluto.
Clavin
Es una computadora nueva, así que instalé el nodo en los últimos días. Acabo de hacer una actualización en modo administrador, pero no
tuve

Respuestas:

60

Me encontré con el mismo problema mientras cambiaba algunas configuraciones de npm. Cometí un error con un npm config setcomando y esto agregó una línea que hace referencia a un directorio no existente a C:\Users\{User}\.npmrc. Después de eliminar esa línea manualmente .npmrc, el problema desapareció.

usuario1460043
fuente
1
¿Qué tan idiota soy? Estaba en una subcarpeta ahahahah gracias.
Sampgun
Yo también, estaba apuntando a cafile a una carpeta en lugar de un archivo real, y cada npmcomando dejó de funcionar por completo, ninguna solución funcionó aparte de su respuesta, ¡gracias!
Giorgio Tempesta
194

EISDIR son las siglas de " Error, Is Directory ". Esto significa que NPM está intentando hacer algo con un archivo pero es un directorio . En su caso, NPM está intentando " leer " un archivo que es un directorio (Línea: 4). Dado que la operación no se puede realizar, se produce el error.

Tres cosas para asegurarse aquí.

  1. Asegúrese de que el archivo exista. Si no es así, debe crearlo. (Si NPM depende de alguna información específica en el archivo, necesitará tener esa información allí).
  2. Asegúrese de que sea un archivo y no un directorio.
  3. Tiene los permisos adecuados. Puede cambiar el archivo para que tenga todos los permisos con "sudo chmod 777 FILE_NAME". (Cuidado: está otorgando permisos de lectura, escritura y ejecución a cada uno en ese archivo)
MauricioLeal
fuente
13
Esta debería ser la respuesta aceptada en mi opinión, ya que contiene información sobre el problema y una solución
schu34
4
¿Qué tan idiota soy? Estaba en una subcarpeta ahahahah gracias.
Sampgun
3
Pasé 3 horas en esto. Tenía una carpeta llamada back-button.css. 3 horas, nunca volveré. Gracias a ti no fue 4.
Loke
1
Obtuve esto usando fs.writeFile, pero un error impidió que mi programa pasara el nombre de archivo, por lo que estaba tratando de escribir en una carpeta. Gracias.
Nelles
1
Eso es correcto. Me enfrenté a este problema mientras usaba nodemailer en una aplicación de escritorio NW.js mientras escribía código para un administrador de correo electrónico. También estaba tratando de leer el directorio en lugar de leer un archivo de imagen para enviarlo como archivo adjunto. Muchas gracias.
Hygull
13

Tuve el mismo problema hoy después de haber actualizado mi npm de la versión 6.4.1 a la versión 6.5.0. Arreglé esto descargando el instalador .pkg (recomendado para la mayoría de los usuarios) de node.js y luego lo ejecuté .

PeeJee
fuente
El mismo método exacto me ayudó
DNReNTi
mi máquina tiene instalada la misma versión npm pero todavía tengo el problema
Gaurav Paliwal
9

En mi caso, estaba obteniendo el "EISDIR: operación ilegal en un directorio, leer" porque en mi archivo .angular-cli.json no estaba proporcionando una ruta completa en "scripts:"

Por ejemplo tuve

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

De hecho debería haber sido

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

Tuve el mismo problema en Mac OS X (instalado con homebrew), y .npmrc no es el único lugar donde el nodo almacena las variables de configuración. Hay un archivo de configuración glocal npmrc en / usr / local / etc que debe editar con este comando:

sudo nano npmrc

Elimine la ca=línea, o cualquiera que sea la configuración de configuración que rompió su instalación, guarde ese archivo e intente npm nuevamente, y debería verlo funcionando.

rncrtr
fuente
Me alegro de haber podido ayudar.
rncrtr
4

Estos extraños errores ocurrieron recientemente en mi máquina OSX.

Podría ayudarme de la manera más rápida y sucia ejecutando:

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

Algo parecía haber estropeado los derechos de acceso de todos los módulos del nodo global.

datayeah
fuente
2

Para mí, la corrección fue agregar una barra después del nombre del directorio

Miniwe
fuente
1

Realizar una desinstalación completa, incluida la eliminación de rutas, etc. y la reinstalación ha resuelto el problema, aunque es un problema muy extraño.

Cómo eliminar por completo node.js de Windows

Otro Mike
fuente
En primer lugar no me gustó tu respuesta, pero debo confesar que a mí me pasó lo mismo. La creación de un nuevo meteorproyecto --reactcausó este problema, pero eliminar el proyecto y volver a crearlo funcionó (OS X).
Hola Soy Edu Feliz Navidad
1

Tuve este problema con gulp. El problema fue que gulp agregó una dependencia a mi archivo fuente y creo que npm intentó abrirlo:

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

Asegúrese de que no haya referencias extrañas en su archivo package.json.

Lanklaas
fuente
1

Verifique que esté ejecutando npm install desde el directorio adecuado.

(El archivo package.json podría estar un directorio adicional hacia abajo, por ejemplo).

James Lawruk
fuente
1

Si su problema está asociado con React Native Packager. Intente restablecer la caché con react-native start --reset-cache.

Robot amigable
fuente
1

En mi caso, olvidé pasar la ruta completa de uno de los archivos que estaba preguntando. Después de pasar la ruta completa del archivo funcionó :)

Rafael paz
fuente
1

En mi caso, yo estaba frente a este problema durante la instalación create-react-appen MAC (Mojave OS)la siguiente comando:

sudo npm install create-react-app -g

y obtuve errores como este:

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'

He leído npm.community que intento instalar sin sudo:

npm install create-react-app -g

y realmente resolvió mi problema .. !!

Ritesh
fuente
1

Asegúrese de que node_modules (y su root package.json) no contenga una referencia al módulo "package.json" de npm. Eliminar package.json FOLDER de node_modules resolvió el problema para mí.

Benjamin Piette
fuente
0

Tuve un problema similar al configurar el código repetitivo. Estaba leyendo mi archivo bundle.js como directorio. Así que como se indica aquí. EISDIR significa que es un directorio y no un archivo. Para solucionar el problema, eliminé el archivo y lo recreé (originalmente se creó automáticamente). Si no puede encontrar el archivo (porque está oculto), simplemente use la terminal para buscarlo y eliminarlo.

Pablo DelaCruz
fuente
0

Tuve el mismo problema hasta que intenté eliminar la carpeta .git. Funcionó. Supongo que este tipo de problema puede tener diferentes causas.

José Augusto Paiva
fuente
0

Tuve el mismo problema. Había una carpeta vinculada en mi directorio que estaba causando el problema. Agregué esa carpeta para ignorar la lista y luego comenzó a funcionar bien como se esperaba.

deyujjal
fuente
0

Sé que esto no es una pregunta específica sobre forever js ... pero Google me llevó aquí, así que ... Para mí fue tan simple como una barra final.

Acabo de cambiar:

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

A:

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

Y el error desapareció

Marc Alexander
fuente
0

Asegúrese de verificar su versión de npm y si hay problemas con ella. Estaba teniendo el mismo problema en el momento de esta publicación y descubrí que mi versión npm (6.5) tenía problemas. Tuve que desinstalar y reinstalar la versión 6.4.1 de npm y luego todo comenzó a funcionar bien nuevamente.

smoosh911
fuente
0

Tenía un enlace simbólico roto a node_modules en una subcarpeta

Daniel Kukula
fuente
0

En mi caso, estos pasos resolvieron mi problema:

  1. npmproceso de terminación(CTRL + C)
  2. eliminar toda la carpeta
  3. creando uno nuevo
  4. corriendo de npmnuevo
BartusZak
fuente
0

En mi caso, estoy usando Windows 10 en español y esta versión mezcla nombres de directorios en inglés y español. Mi problema fue que el directorio del escritorio tiene este nombre para algunos comandos y escritoriopara otros. Creo que npm no puede resolver esto. Mi solución fue simplemente cambiar a otro directorio comenzando desde C: \ diferente a mi directorio de inicio.

JJEA
fuente
0

Me había enfrentado a un problema similar. Configuré cafile usando el comando:

npm config set cafile PATH_TO_CERTIFICATE

Pude resolver esto eliminando la configuración del archivo de certificado y la configuración strict-ssl = false.

Prateek Porwal
fuente
0

Solucioné este problema moviendo mi directorio de mi unidad exFAT que no admite enlaces simbólicos.

Mi unidad exFat se comparte entre osx y una partición de Windows de bootcamp, por lo que cuando intenté clonar y npm instalar mi proyecto, estaba fallando, pero nunca explica que exFAT no admite esta funcionalidad.

Hay controladores que puede instalar para agregar la capacidad de enlace simbólico, pero tendrá que realizar gran parte de su configuración manualmente en comparación con ejecutar un simple script npm.

Mate
fuente
0

Para mac os: si se instala directamente desde el sitio web de nodejs, el archivo npmrc se ubicaría en / usr / local / etc / npmrc . Simplemente elimine la configuración que no está definida y este problema se solucionará.

Rajat Gupta
fuente
0

Acabo de quitar la linea

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

para laravel 5.6 con vue.js. en webpack.mix.js

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

En mi caso, los C:\Users\{user}\AppData\local\npmarchivos estaban ocultos, por lo que no pude encontrar ni eliminar el directorio de problemas. ¡Me tomó DÍAS darme cuenta de esto!

¡Así que verifique dos veces para des-ocultar las carpetas para no perderlas! Aquí hay un enlace para hacer esto si no sabe cómo.

jabarbush
fuente