Yarn: Windows falla con EPERM: operación no permitida, todos los archivos son de solo lectura

Creado en 13 oct. 2016  ·  44Comentarios  ·  Fuente: yarnpkg/yarn

¿Quieres solicitar una _función_ o informar de un _ error_?
Insecto

¿Cuál es el comportamiento actual?
Al realizar cualquier operación con hilo (agregue, por ejemplo), se produce un error con:

EPERM: operation not permitted, open 'C:\foo\node_modules\firebase\app-node.js'
at Error (native)

Si el comportamiento actual es un error, proporcione los pasos para reproducirlo.

  1. Utilice Windows :(
  2. Usa hilo
  3. Fracaso

Para solucionar el problema, haga clic con el botón derecho en la carpeta node_modules y desmarque "Solo lectura". Espere. Vuelva a ejecutar el comando de hilo. ¡Ahora funciona, como por arte de magia! Una vez hecho el hilo, todos los archivos vuelven a ser de solo lectura.

¿Cuál es el comportamiento esperado?
No debería tener que marcar los archivos como legibles.

Por favor, mencione su versión de node.js, yarn y sistema operativo.
nodo v6.3.1
hilo v0.15.1
Windows 10 (edición de aniversario)

cat-bug os-windows triaged

Comentario más útil

Encontré este error porque intenté ejecutar un comando yarn mientras el servidor de nodo se estaba ejecutando. ¡Ups! HTH alguien más.

Todos 44 comentarios

Para solucionar el problema, haga clic con el botón derecho en la carpeta node_modules y desmarque "Solo lectura".

¿Yarn está marcando node_modules como de solo lectura o algo más lo está haciendo? No puedo reproducir en Windows con una aplicación nueva (es decir, yarn init && yarn add react )

Hola @ Daniel15

¿Podría intentar esto en un directorio limpio?

yarn init
yarn add firebase
yarn add react

El último comando me da:

C:\Dev\yarntest>yarn add react
yarn add v0.15.1
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
error EPERM: operation not permitted, open 'C:\Dev\yarntest\node_modules\firebase\app-node.js'
    at Error (native)
info Visit http://yarnpkg.com/en/docs/cli/add for documentation about this command.

No estoy seguro de si es algo que hacen los paquetes de base de fuego.

Para aclaraciones; Intenté los mismos pasos pero con react y eslint y no vi el mismo error.

¡Gracias por la información! Puedo replicar el problema en Windows pero no en Debian Linux.

Yo diría que esto es más un _ error crítico_ ya que evita incluso el uso básico de Yarn en cualquier proyecto que use el módulo firebase .

La eliminación del indicador _read-only_ funciona de forma recursiva, pero solo temporalmente. Incluso ejecutar solo yarn vuelve a ejecutar toda la fase linking dependencies y devuelve estos indicadores de _sólo lectura_.

Creando un proyecto nuevo con yarn init e instalando cualquier dependencia única establece la bandera _read-only_ en todos los directorios (no archivos) comenzando desde node_modules . Sin embargo, en el caso del módulo firebase , los archivos también son _sólo lectura_ por alguna razón. Hacer lo mismo con NPM no establece _read-only_ en archivos.

Sí, esto es bastante molesto.

@ Daniel15
Otro problema que tengo es que instalo el paquete y en el paso posterior a la instalación establece chmod some-file 400 , y aunque algunas operaciones fallan con un error similar en este archivo (si configuro los permisos en 644, se ejecuta bien). Así que espero que solucione el problema original y mi problema también desaparecerá.

@Tapppi (cita del número )

PD Con respecto al # 992, probablemente podría escribir un script "postinstall" en una línea para arreglar los permisos después de cada instalación.

Eso borraría un poco la utilidad de Yarn, ¿no crees? La eliminación de esos indicadores de solo lectura hace que Yarn vuelva a realizar todo el proceso de vinculación. Solo el ahorro de rendimiento sería el uso de caché en lugar de descargar a través de la red cada vez.

@FredyC ¿ No veo cómo un script postinstall borra la utilidad de los hilos? Lo más probable es que siga siendo varias veces más rápido que npm durante la instalación y tenga un archivo de bloqueo. Si eso hace que el hilo no sea preferible para usted, creo que el hilo no es preferible de todos modos en su forma actual.

Encontrando esto también. No hay nada especial en mi proyecto, solo lo estoy solucionando soplando mi carpeta node_modules para nuevos paquetes por ahora.

Con suerte, esto se resuelve pronto, ¡gracias a Dios que el hilo es tan malditamente rápido! ;)

Bueno, esto es interesante. Si descarga el tarball real del módulo firebase, ¡esos atributos de solo lectura ya están allí! ... https://registry.npmjs.org/firebase/-/firebase-3.4.1.tgz

Eso significa que no es exactamente culpa de Yarn. Supongo que lo que NPM hace de manera diferente es eliminar esa marca en el momento de la instalación. Básicamente, esa podría ser una solución que Yarn debería hacer también porque nunca se sabe qué otro módulo puede verse afectado de esa manera.

De hecho, intenté publicar mi propio paquete en NPM con el indicador de solo lectura establecido en un archivo. Lamentablemente, esa no es la fuente del problema. Los archivos se publican sin la bandera.

Así que presenté una solicitud de soporte con Firebase para ver si hay algo que puedan cambiar en su proceso de publicación.

¿Podemos esperar que en el futuro lanzamiento de Yarn se resuelva este caso, utilizando el enfoque de NPM o de otra manera?

Solo para tu información, también funcionará si eliminas firebase primero, luego agregas los paquetes requeridos y, por último, agregas firebase nuevamente. Entonces, ¿Yarn actualiza los permisos cuando se elimina firebase?

@ vijay-stayntouch No, Yarn no hace nada al respecto. El problema principal es que si tiene firebase allí con indicadores de solo lectura y el proceso de "vinculación de dependencias" tiene que ejecutarse por alguna razón, no puede tocar estos archivos y falla. Aunque no estoy seguro de cómo es posible que Yarn realmente pueda eliminar esos archivos con indicadores de solo lectura.

Hola, ingeniero de Firebase. Vamos a solucionar este problema asegurándonos de que nuestra próxima versión ya no contenga archivos de solo lectura. Dicho esto, esto parece un comportamiento inesperado y probablemente debería solucionarse en todos los ámbitos para Yarn, ya que está en npm. ¡Gracias!

¿Es este el mismo problema que el número 872?

Buenas noticias para todos los que tengan problemas con esto. Hay un nuevo módulo de base de fuego 3.6.2 sin indicadores de solo lectura y ahora funciona perfectamente.

Recomiendo cerrar este a favor del # 961, que es más genérico y está relacionado solo con Yarn.

@FredyC ¡

La pregunta sigue colgando en el aire si cualquier otro paquete hace que su código sea de solo lectura. El mismo problema volverá a suceder.

@ vijay-stayntouch Sí, eso es lo que el # 961 debería intentar resolver realmente.

Tengo el mismo problema con yarn add react-hot-loader --dev dice:

yarn add v0.20.3
[1/4] Resolving packages...
[2/4] Fetching packages...
warning [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
error An unexpected error occurred: "EPERM: operation not permitted, utime '/home/syd/Work/taxibs/zaher/node_modules/source-map/README.md'".
info If you think this is a bug, please open a bug report with the information provided in "/home/syd/Work/taxibs/zaher/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Estoy haciendo un yarn cache clean y ejecuto el yarn add ... nuevo, pero el problema sigue ahí.
Estoy en ubuntu 16.04
nodo v6.9.4 y npm v3.10.10

Estaba teniendo el mismo problema: la única solución que funcionó para mí fue usar rimraf node_modules para eliminar la carpeta node_modules y luego reinstalar todos los paquetes usando yarn

Encuentro este problema de vez en cuando al instalar paquetes con npm o yarn, mi solución es ir al administrador de archivos, hacer clic con el botón derecho en la carpeta principal / node_modules, seleccionar propiedades y marcar y desmarcar "solo lectura". También puede hacerlo usando attrib en la línea de comando. Luego, vuelve a intentar la instalación y funciona.

Encontré este error porque intenté ejecutar un comando yarn mientras el servidor de nodo se estaba ejecutando. ¡Ups! HTH alguien más.

Probé varias soluciones presentadas (incluida la desactivación de solo lectura) - no funciona
versiones
nodo v6.11.1
hilo v0.27.5
Windows 10

error: "EPERM: operación no permitida, desvincular 'D: \ urp \ node_modules \ node-sass \ vendor \ win32-x64-48 \ binding.node'"

_corrió:_
$ cheque de hilo - integridad

_recibido:_
error Lockfile no contiene patrón: "material-ui@^0.19.0"
error Lockfile no contiene patrón: " [email protected] "
error Lockfile no contiene patrón: "npm-run-all@^4.1.1"
error El archivo de bloqueo no contiene el patrón: "react@^15.6.1"
error Lockfile no contiene patrón: "react-dom@^15.6.1"
error El archivo de bloqueo no contiene el patrón: "react-router-dom@^4.2.2"
error Lockfile no contiene patrón: "react-tap-event-plugin@^2.0.1"
error No se pudo encontrar un archivo de integridad

¡Cualquier ayuda será genial!

sí, a veces apesta mientras se hace en Win (como desarrollar Ionic2 / 3 en Win, arrojando permanentemente errores EPERM para, por ejemplo, instalar / mod npm packs y otras cosas); puede estar protegido por software antivirus; desmarcando read only attr de todos los node_modules ;
Además, intente agregar el archivo .npmrc a suforlder (c: / usuarios /) con contenido unsafe-perm=true ; agregue el mismo archivo a la raíz de su proyecto; último recurso: ejecute powershell como administrador y eleve con Start-Process powershell -Verb runAs - se abrirá una nueva ventana elevada de powershell, que debería poder operar

En Windows, asegúrese de ejecutar el símbolo del sistema "Como administrador". :: facepalm ::

Probé todo lo que se enumera aquí, la única forma en que pude solucionarlo fue:

npm install -g rimraf
rimraf node_modules

como lo sugiere @domjtalbot.

también esto sucede cuando tiene dos instancias de hilo en ejecución tratando de instalar paquetes en diferentes proyectos

me pasa a mí también, npm 5.8.0, y el único que funciona es señalado por @domjtalbot y @ James-E-Adams

Me encuentro con el mismo problema cuando tengo un servidor que se ejecuta con nodemon y luego agrego un paquete yarn add bcrypt . Con el comentario de @rmorrise soluciono mi problema. Nunca sé que el servidor en ejecución afectará la instalación.

@rmorrise +1, sería lógico si yarn pudiera detectar tal circunstancia y lanzar una advertencia significativa en su lugar.

Para obtener información: tuve el mismo problema después de cancelar la instalación de un paquete (ctrl + c) e intentar instalar otro paquete después. También tenía un servidor en ejecución, pero no causó errores cuando agregué otros paquetes antes.

download (1)

Me he encontrado con este error varias veces y solo un reinicio de Windows ayudó.

Tuve el mismo problema. La razón por la que se produjo este error fue ejecutar el servidor de desarrollo create-react-app en ubuntu para Windows bash. Detener el servidor resolvió el problema.

download (1)

Me he encontrado con este error varias veces y solo un reinicio de Windows ayudó.

Por lo general, prefiero rechazar esas respuestas, pero esto fue literalmente lo único que funcionó para mí 🤦‍♂

download (1)

Me he encontrado con este error varias veces y solo un reinicio de Windows ayudó.

De hecho, esto me sirvió ...

Al menos para mí, esto parece deberse a tener vscode abierto.

Asegúrese de que su aplicación (angular, reaccionar, etc.) esté apagada antes de npm install

@ScottGuymer

No puedo creer que esto funcione

Gracias por tu solución

@Gameghostify me tampoco 😄

De nada.

Verifique si tiene un proceso de nodo en ejecución, apáguelo e inténtelo de nuevo

Estaba ejecutando hilo desde un terminal vscode, así que reinicié vscode y eso funcionó

sí, a veces apesta mientras se hace en Win (como desarrollar Ionic2 / 3 en Win, arrojando permanentemente errores EPERM para, por ejemplo, instalar / mod npm packs y otras cosas); puede estar protegido por software antivirus; desmarcando read only attr de todos los node_modules ;
Además, intente agregar el archivo .npmrc a su forlder (c: / users /) con contenido unsafe-perm=true ; agregue el mismo archivo a la raíz de su proyecto; último recurso: ejecute powershell como administrador y eleve con Start-Process powershell -Verb runAs - se abrirá una nueva ventana elevada de powershell, que debería poder operar

REALMENTE FUNCIONÓ. GRACIAS.

@ Gayathri-K-2000 ¿Puede proporcionar más detalles, por favor? Estoy enfrentando el mismo problema pero no funcionó. Proporcione un ejemplo de lo que hizo si es posible. ¡Gracias!

@ Gayathri-K-2000 ¿Puede proporcionar más detalles, por favor? Estoy enfrentando el mismo problema pero no funcionó. Proporcione un ejemplo de lo que hizo si es posible. ¡Gracias!

Desmarqué 'solo lectura' de las propiedades de los módulos de nodo y ejecuté cmd como administrador. Funciona.

Verifique si tiene un proceso de nodo en ejecución, apáguelo e inténtelo de nuevo

Ese fue mi problema aquí también. Lo mismo ocurre con las aplicaciones de reacción, por ejemplo, cuando se le pide que instale node-sass - no puede hacerlo mientras su aplicación está en ejecución. ¡Gracias a todos!

¿Fue útil esta página
0 / 5 - 0 calificaciones