Yarn: O Windows falha com EPERM: operação não permitida, todos os arquivos são somente leitura

Criado em 13 out. 2016  ·  44Comentários  ·  Fonte: yarnpkg/yarn

Você deseja solicitar um _feature_ ou denunciar um _bug_?
Erro

Qual é o comportamento atual?
Ao realizar qualquer operação com yarn (adicionar, por exemplo), erros com:

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

Se o comportamento atual for um bug, forneça as etapas para reproduzir.

  1. Use o Windows :(
  2. Usar fio
  3. Fracasso

Para corrigir o problema, clique com o botão direito na pasta node_modules e desmarque "Somente leitura". Esperar. Execute novamente o comando yarn. Agora funciona como mágica! Depois que o yarn é feito, todos os arquivos voltam a ser somente leitura.

Qual é o comportamento esperado?
Não deveria ser necessário marcar os arquivos como legíveis.

Mencione seu node.js, yarn e versão do sistema operacional.
nó v6.3.1
yarn v0.15.1
Windows 10 (edição de aniversário)

cat-bug os-windows triaged

Comentários muito úteis

Encontrei este erro porque tentei executar um comando yarn enquanto o servidor de nó estava em execução. Opa! HTH outra pessoa.

Todos 44 comentários

Para corrigir o problema, clique com o botão direito na pasta node_modules e desmarque "Somente leitura".

O Yarn está marcando node_modules como somente leitura ou outra coisa está fazendo isso? Não consigo reproduzir no Windows com um aplicativo totalmente novo (ou seja, yarn init && yarn add react )

Olá @ Daniel15

Você poderia tentar isso em um diretório limpo?

yarn init
yarn add firebase
yarn add react

O último comando me dá:

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.

Não tenho certeza se é algo que os pacotes do firebase fazem.

Para esclarecimento; Tentei os mesmos passos, mas com react e eslint e não encontrei o mesmo erro.

Obrigado pela informação! Posso replicar o problema no Windows, mas não no Debian Linux.

Eu diria que isso é mais um _erro crítico_, pois impede até mesmo o uso básico do Yarn em qualquer projeto usando o módulo firebase .

A remoção do sinalizador _read-only_ recursivamente funciona, mas apenas temporariamente. Mesmo executando apenas yarn executa novamente toda a fase linking dependencies e retorna esses sinalizadores _read-only_.

Criar um novo projeto com yarn init e instalar qualquer dependência única define o sinalizador _read-only_ para todos os diretórios (não arquivos) começando em node_modules . No entanto, no caso do módulo firebase , os arquivos também são _ somente leitura_ por algum motivo. Fazer a mesma coisa com o NPM não define _read-only_ para arquivos.

Sim, isso é muito chato.

@ Daniel15
Outro problema que tenho eu instalei o pacote e na etapa de pós-instalação ele define chmod some-file 400 , e embora algumas operações falhem com um erro semelhante neste arquivo, (se eu definir as permissões para 644 ele funciona bem). Espero que você corrija o problema original e meu problema também desapareça.

@Tapppi (citação do problema )

PS Em relação ao # 992, você provavelmente poderia escrever um script "postinstall" oneliner para corrigir as permissões após cada instalação.

Isso iria acabar com a utilidade do Yarn, não acha? A remoção dessas sinalizações somente leitura faz com que o Yarn faça todo o processo de vinculação novamente. Somente a economia de desempenho seria sobre o uso de cache em vez de baixar pela rede todas as vezes.

@FredyC Não consigo ver como um script pós-instalação apaga a utilidade do yarns? Provavelmente, ainda é várias vezes mais rápido do que o npm durante a instalação e tem um arquivo de bloqueio. Se isso torna o fio incompreensível para você, eu acho que o fio não é preferível de qualquer maneira em sua forma atual.

Encontrando isso também. Nada de especial sobre meu projeto, estou apenas contornando-o soprando minha pasta node_modules por novos pacotes por enquanto.

Espero que isso resolva logo, graças a Deus o fio é tão rápido! ;)

Bem, isso é interessante. Se você baixar o tarball real do módulo firebase, esses atributos somente leitura já estarão lá! ... https://registry.npmjs.org/firebase/-/firebase-3.4.1.tgz

Isso significa que não é exatamente culpa do Yarn. Presumo que o que o NPM faz de maneira diferente é remover esse sinalizador na instalação. Essencialmente, essa pode ser a solução que o Yarn deve fazer também, porque você nunca sabe que outro módulo pode ser afetado dessa forma.

Na verdade, tentei publicar meu próprio pacote no NPM com o sinalizador somente leitura definido em um arquivo. Infelizmente, essa não é a origem do problema. Os arquivos são publicados sem a bandeira.

Então, enviei uma solicitação de suporte ao Firebase para ver se há algo que eles podem alterar em seu processo de publicação.

Podemos esperar que no futuro lançamento do Yarn este caso seja resolvido, usando a abordagem NPM ou de outra forma.

Apenas para sua informação, também funcionará se você remover o firebase primeiro, adicionar os pacotes necessários e, por último, adicionar o firebase de volta. Então, o Yarn está atualizando as permissões quando o firebase é removido?

@ vijay-stayntouch Não, Yarn não faz nada a respeito. O principal problema é que, se você tiver o firebase lá com sinalizadores somente leitura e o processo de "vinculação de dependências" precisar ser executado por algum motivo, ele não conseguirá tocar nesses arquivos e falhará. Embora eu não tenha certeza de como é possível que o Yarn possa realmente excluir esses arquivos com sinalizadores somente leitura.

Ei, engenheiro do Firebase aqui. Vamos consertar isso do nosso lado, garantindo que nosso próximo lançamento não contenha mais arquivos somente leitura. Dito isso, isso parece um comportamento inesperado e provavelmente deve ser corrigido em todos os aspectos do Yarn, como acontece no npm. Obrigado!

Este é o mesmo problema que o # 872?

Boas notícias para todos que têm problemas com isso. Há um novo módulo do firebase 3.6.2 sem sinalizadores de somente leitura e agora funciona perfeitamente.

Recomendo fechar este em favor de # 961, que é mais genérico e relacionado apenas ao Yarn.

@FredyC Boas notícias!

A questão ainda paira no ar que se qualquer outro pacote torna seu código somente leitura. O mesmo problema acontecerá novamente.

@ vijay-stayntouch Sim, é isso que o # 961 realmente deve tentar resolver.

Tenho o mesmo problema com yarn add react-hot-loader --dev que diz:

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.

Estou fazendo um yarn cache clean e exec o yarn add ... novamente, mas o problema ainda está aí.
Estou no ubuntu 16.04
nó v6.9.4 e npm v3.10.10

Eu estava tendo o mesmo problema - a única solução que funcionou para mim foi usar rimraf node_modules para excluir a pasta node_modules e reinstalar todos os pacotes usando yarn

Eu encontro esse problema de vez em quando instalando pacotes com npm ou yarn, minha solução alternativa é o gerenciador de arquivos, clicar com o botão direito na pasta principal / node_modules, selecionar propriedades e desmarcar "somente leitura". Você também pode fazer isso usando o attribute na linha de comando. Em seguida, você tenta instalar novamente e funciona.

Encontrei este erro porque tentei executar um comando yarn enquanto o servidor de nó estava em execução. Opa! HTH outra pessoa.

Tentei várias soluções apresentadas (incl. Desmarque somente leitura) - não funciona
versões
nó v6.11.1
fio v0.27.5
Windows 10

erro: "EPERM: operação não permitida, desvincular 'D: \ urp \ node_modules \ node-sass \ vendor \ win32-x64-48 \ binding.node'"

_correu:_
$ yarn check --integrity

_recebido:_
erro Lockfile não contém padrão: "material-ui@^0.19.0"
erro Lockfile não contém padrão: " [email protected] "
erro Lockfile não contém padrão: "npm-run-all@^4.1.1"
Error Lockfile não contém padrão: "react@^15.6.1"
Erro Lockfile não contém padrão: "react-dom@^15.6.1"
Erro Lockfile não contém padrão: "react-router-dom@^4.2.2"
error Lockfile não contém padrão: "react-tap-event-plugin@^2.0.1"
erro Não foi possível encontrar um arquivo de integridade

Qualquer ajuda será ótima!

sim, às vezes é uma droga fazer no Win (como desenvolver Ionic2 / 3 no Win, jogando permanentemente EPERM erros para instalar / mod npm packs e outras coisas); pode ser causado por um software antivírus; desmarcando read only attr de todos os node_modules ;
Além disso, tente adicionar o arquivo .npmrc ao seuforlder (c: / usuários /) com conteúdo unsafe-perm=true ; adicione o mesmo arquivo à raiz do seu projeto; último recurso: execute o PowerShell como administrador e eleve com Start-Process powershell -Verb runAs - abrirá uma nova janela elevada do PowerShell, que deve ser capaz de operar

No Windows, certifique-se de executar o Prompt de Comando "Como Administrador". :: facepalm ::

Tentei tudo listado aqui - a única maneira de consertar foi:

npm install -g rimraf
rimraf node_modules

como sugerido por @domjtalbot.

também isso acontece quando você tem duas instâncias do yarn em execução tentando instalar pacotes em projetos diferentes

acontece comigo também, npm 5.8.0, e o único que funciona é apontado por @domjtalbot e @ James-E-Adams

Tive o mesmo problema quando tenho um servidor executando com nodemon , em seguida, adicionando um pacote yarn add bcrypt . Com o comentário de @rmorrise , Nunca sei se o servidor em execução afetará a instalação.

@rmorrise +1, seria lógico se yarn pudesse detectar tal circunstância e lançar um aviso significativo em seu lugar.

Para informações: tive o mesmo problema depois de cancelar a instalação de um pacote (ctrl + c) e tentar instalar outro pacote depois. Eu também tinha um servidor em execução, mas não causou erros quando adicionei outros pacotes antes.

download (1)

Já me deparei com esse erro algumas vezes e apenas uma reinicialização do Windows ajudou.

Eu tive o mesmo problema. O motivo desse bug foi a execução do servidor de desenvolvimento criar-reagir-app no ​​Ubuntu para Windows Bash. Parar o servidor resolveu o problema.

download (1)

Já me deparei com esse erro algumas vezes e apenas uma reinicialização do Windows ajudou.

Normalmente eu prefiro rejeitar essas respostas, mas isso foi literalmente a única coisa que funcionou para mim 🤦‍♂

download (1)

Já me deparei com esse erro algumas vezes e apenas uma reinicialização do Windows ajudou.

Isso realmente funcionou para mim ...

Pelo menos para mim, isso parece ser causado por ter o vscode aberto.

Certifique-se de que seu aplicativo (angular, react, etc ...) esteja desligado antes de npm install

@ScottGuymer

Eu não posso acreditar que isso funciona

obrigado pela sua solução

@Gameghostify me também 😄

De nada.

Verifique se você tem um processo de nó em execução, desligue-o e tente novamente

Eu estava executando o yarn de um terminal vscode, então reiniciei o vscode e isso funcionou

sim, às vezes é uma droga fazer no Win (como desenvolver Ionic2 / 3 no Win, jogando permanentemente EPERM erros para instalar / mod npm packs e outras coisas); pode ser causado por um software antivírus; desmarcando read only attr de todos os node_modules ;
Além disso, tente adicionar o arquivo .npmrc ao seu anterior (c: / users /) com o conteúdo unsafe-perm=true ; adicione o mesmo arquivo à raiz do seu projeto; último recurso: execute o PowerShell como administrador e eleve com Start-Process powershell -Verb runAs - abrirá uma nova janela elevada do PowerShell, que deve ser capaz de operar

FUNCIONOU REALMENTE. OBRIGADO.

@ Gayathri-K-2000 Você pode fornecer mais detalhes, por favor? Estou enfrentando o mesmo problema, mas não funcionou. Por favor, dê um exemplo do que você fez, se possível. Obrigado!

@ Gayathri-K-2000 Você pode fornecer mais detalhes, por favor? Estou enfrentando o mesmo problema, mas não funcionou. Por favor, dê um exemplo do que você fez, se possível. Obrigado!

Desmarquei 'somente leitura' das propriedades dos módulos de nó e executei o cmd como administrador. Funciona.

Verifique se você tem um processo de nó em execução, desligue-o e tente novamente

Esse era realmente o meu problema aqui também. O mesmo vale para aplicativos de reação, por exemplo, quando você é solicitado a instalar node-sass - você não pode fazer isso enquanto seu aplicativo está em execução. Obrigado a todos!

Esta página foi útil?
0 / 5 - 0 avaliações