Yarn: Windows не выполняет EPERM: операция не разрешена, все файлы доступны только для чтения

Созданный на 13 окт. 2016  ·  44Комментарии  ·  Источник: yarnpkg/yarn

Вы хотите запросить _функцию_ или сообщить _ об ошибке?
Ошибка

Каково текущее поведение?
При выполнении любой операции с пряжей (например, добавить) возникает ошибка:

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

Если текущее поведение является ошибкой, предоставьте шаги для воспроизведения.

  1. Используйте Windows :(
  2. Используйте пряжу
  3. Неудача

Чтобы решить эту проблему, щелкните правой кнопкой мыши папку node_modules и снимите флажок «Только для чтения». Подождите. Повторно запустите команду пряжи. Теперь это работает, как по волшебству! После того, как пряжа будет завершена, все файлы снова станут доступны только для чтения.

Какое поведение ожидается?
Не нужно отмечать файлы как читаемые.

Пожалуйста, укажите ваш node.js, yarn и версию операционной системы.
узел v6.3.1
пряжа v0.15.1
Windows 10 (юбилейная версия)

cat-bug os-windows triaged

Самый полезный комментарий

Возникла эта ошибка, потому что я пытался выполнить команду yarn во время работы сервера узла. Ой! HTH кто-то другой.

Все 44 Комментарий

Чтобы решить эту проблему, щелкните правой кнопкой мыши папку node_modules и снимите флажок «Только для чтения».

Yarn помечает node_modules как доступный только для чтения или что-то еще делает это? Я не могу воспроизвести в Windows новое приложение (например, yarn init && yarn add react )

Привет @ Daniel15

Не могли бы вы попробовать это в чистом каталоге?

yarn init
yarn add firebase
yarn add react

Последняя команда дает мне:

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.

Я не уверен, что это то, что делают пакеты firebase?

В целях разъяснения; Я попробовал те же шаги, но с помощью react и eslint, и не увидел той же ошибки.

Спасибо за информацию! Я могу воспроизвести проблему в Windows, но не в Debian Linux.

Я бы сказал, что это скорее _критическая ошибка_, поскольку она предотвращает даже базовое использование Yarn в любом проекте с использованием модуля firebase .

Удаление флага _read-only_ рекурсивно работает, но только временно. Даже при запуске всего yarn повторно выполняет всю фазу linking dependencies и возвращает эти флаги _read-only_ обратно.

Создание нового проекта с помощью yarn init и установка любой отдельной зависимости устанавливает флаг _read-only_ для всех каталогов (не файлов), начиная с node_modules . Однако в случае модуля firebase файлы по какой-то причине также доступны только для чтения. То же самое с NPM не устанавливает для файлов только чтение.

Да, это довольно неприятно.

@ Daniel15
Еще одна проблема, с которой я сталкиваюсь, я устанавливаю пакет, и на этапе постинсталляции он устанавливает chmod some-file 400 , и хотя некоторые операции не работают с аналогичной ошибкой в ​​этом файле (если я установил разрешения на 644, он работает нормально). Так что я надеюсь, что вы исправите исходную проблему, и моя проблема тоже исчезнет.

@Tapppi (цитата из выпуска )

PS Что касается # 992, вы, вероятно, могли бы написать одиночный сценарий "postinstall", чтобы исправлять разрешения после каждой установки.

Это как бы лишит Yarn полезности, не так ли? Удаление этих флагов только для чтения заставляет Yarn снова выполнять весь процесс связывания. Только экономия производительности связана с использованием кеша вместо загрузки каждый раз по сети.

@FredyC Я не понимаю, как сценарий постинсталляции стирает всю полезность? При установке он, скорее всего, в несколько раз быстрее, чем npm, и имеет файл блокировки. Если это делает пряжу для вас неприемлемой, я могу подумать, что пряжа в любом случае не предпочтительна в ее нынешнем виде?

Встречая это тоже. Ничего особенного в моем проекте, я просто обхожу его, выбрасывая свою папку node_modules для новых пакетов.

Надеюсь, это скоро разрешится, слава богу, пряжа так чертовски быстро! ;)

Что ж, это интересно. Если вы загрузите настоящий архив модуля firebase, эти атрибуты только для чтения уже там! ... https://registry.npmjs.org/firebase/-/firebase-3.4.1.tgz

Это означает, что это не совсем ошибка Yarn. Я предполагаю, что NPM по-другому действительно удаляет этот флаг при установке. По сути, это может быть решение, которое Yarn тоже должен делать, потому что вы никогда не знаете, какой другой модуль может быть затронут таким образом.

Я действительно пытался опубликовать свой собственный пакет в NPM с установленным флагом только для чтения в одном файле. К сожалению, проблема не в этом. Файлы публикуются без флажка.

Поэтому я отправил запрос в службу поддержки Firebase, чтобы узнать, есть ли что-то, что они могут изменить в процессе публикации.

Можем ли мы надеяться, что в будущем выпуске Yarn этот случай будет рассмотрен с использованием подхода NPM или иным образом.

Просто к сведению, он также будет работать, если вы сначала удалите firebase, затем добавите необходимые пакеты и, наконец, снова добавите firebase. Так Yarn обновляет разрешения при удалении firebase?

@ vijay-stayntouch Нет, Yarn ничего не делает. Основная проблема заключается в том, что если у вас есть firebase с флагами только для чтения и по какой-то причине должен выполняться процесс «связывания зависимостей», он не может коснуться этих файлов и не работает. Хотя я немного не уверен, как это возможно, что Yarn может действительно удалить эти файлы с флагами только для чтения.

Привет, здесь инженер Firebase. Мы собираемся исправить это со своей стороны, убедившись, что наша следующая версия больше не содержит файлов только для чтения. При этом это кажется неожиданным поведением и, вероятно, должно быть исправлено во всех отношениях для Yarn, как и в npm. Благодаря!

Это та же проблема, что и # 872?

Хорошие новости для всех, у кого с этим проблемы. Есть новый модуль firebase 3.6.2 без флагов только для чтения, и теперь он работает безупречно.

Я рекомендую закрыть его в пользу # 961, который является более общим и относится только к Yarn.

@FredyC Отличные новости!

Вопрос все еще висит в воздухе, если какие-либо другие пакеты делают свой код доступным только для чтения. Та же проблема повторится снова.

@ vijay-stayntouch Ага, вот что на самом деле нужно решить # 961.

У меня такая же проблема с yarn add react-hot-loader --dev :

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.

Я делаю yarn cache clean и снова выполняю yarn add ... но проблема все еще существует.
Я на ubuntu 16.04
узел v6.9.4 и npm v3.10.10

У меня возникла та же проблема - единственное решение, которое сработало для меня, было использовать rimraf node_modules для удаления папки node_modules, а затем переустановить все пакеты с помощью yarn

Я нахожу эту проблему время от времени при установке пакетов с npm или yarn, мой обходной путь заключается в диспетчере файлов, щелкните правой кнопкой мыши основную папку / node_modules, выберите свойства и снимите флажок «только для чтения». Вы также можете сделать это с помощью attrib в командной строке. Затем вы повторите установку, и она работает.

Возникла эта ошибка, потому что я пытался выполнить команду yarn во время работы сервера узла. Ой! HTH кто-то другой.

Пробовал несколько представленных решений (включая снятие флажка только для чтения) - не работает
версии
узел v6.11.1
пряжа v0.27.5
Windows 10

ошибка: «EPERM: операция не разрешена, отключите 'D: \ urp \ node_modules \ node-sass \ vendor \ win32-x64-48 \ binding.node'»

_ran: _
$ yarn check - целостность

_получил:_
error Lockfile не содержит шаблона: "material-ui@^0.19.0"
error Lockfile не содержит шаблона: " [email protected] "
error Lockfile не содержит шаблона: "npm-run-all@^4.1.1"
error Lockfile не содержит шаблона: «react@^15.6.1»
error Lockfile не содержит шаблона: "react-dom@^15.6.1"
error Lockfile не содержит шаблона: "react-router-dom@^4.2.2"
error Lockfile не содержит шаблона: «react-tap-event-plugin@^2.0.1»
ошибка Не удалось найти файл целостности

Любая помощь будет отличной!

да, иногда это отстой при выполнении в Win (например, разработка Ionic2 / 3 в Win, постоянно выкидывая ошибки EPERM например, для установки / модификации пакетов npm и прочего); это может быть вызвано антивирусным ПО; снятие отметки read only attr со всех node_modules ;
Также попробуйте добавить файл .npmrc в свойфорлдер (c: / users /) с содержимым unsafe-perm=true ; добавьте этот же файл в корень вашего проекта; В крайнем случае: запустите powershell от имени администратора и выполните повышение с помощью Start-Process powershell -Verb runAs - откроется новое окно с расширенными правами PowerShell, которое должно работать

В Windows обязательно запустите командную строку «От имени администратора». :: фейспалм ::

Пробовал все перечисленное здесь - единственный способ исправить это было:

npm install -g rimraf
rimraf node_modules

как предлагает @domjtalbot.

также это происходит, когда у вас есть два экземпляра yarn, которые пытаются установить пакеты в разных проектах.

со мной тоже случается, npm 5.8.0, и единственный рабочий указан @domjtalbot и @ James-E-Adams

Я сталкиваюсь с той же проблемой, когда у меня работает сервер с nodemon , а затем добавляется пакет yarn add bcrypt . С комментарием @rmorrise я исправляю свою

@rmorrise +1, было бы логично, если бы yarn мог обнаружить такое обстоятельство и вместо этого выдать значимое предупреждение.

Для информации: у меня была такая же проблема после отмены установки пакета (ctrl + c) и попытки впоследствии установить другой пакет. У меня также был запущен сервер, но он не вызывал ошибок, когда я раньше добавлял другие пакеты.

download (1)

Я уже несколько раз сталкивался с этой ошибкой, и помогла только перезагрузка Windows.

У меня была такая же проблема. Причина, вызвавшая эту ошибку, заключалась в запуске сервера разработки приложений create-response-app в ubuntu для Windows bash. Остановка сервера решила проблему.

download (1)

Я уже несколько раз сталкивался с этой ошибкой, и помогла только перезагрузка Windows.

Обычно я предпочитаю отрицать такие ответы, но это было буквально единственное, что у меня сработало 🤦‍♂

download (1)

Я уже несколько раз сталкивался с этой ошибкой, и помогла только перезагрузка Windows.

Это действительно помогло мне ...

По крайней мере, для меня это похоже на то, что vscode открыт.

Убедитесь, что ваше приложение (angular, react и т. Д.) Выключено до npm install

@ScottGuymer

Я не могу поверить, что это работает

спасибо за ваше решение

@Gameghostify меня либо 😄

Пожалуйста.

Проверьте, запущен ли у вас процесс узла, отключите его и попробуйте снова.

Я запускал пряжу с терминала vscode, поэтому перезапустил vscode, и это помогло

да, иногда это отстой при выполнении в Win (например, разработка Ionic2 / 3 в Win, постоянно выкидывая ошибки EPERM например, для установки / модификации пакетов npm и прочего); это может быть вызвано антивирусным ПО; снятие отметки read only attr со всех node_modules ;
Кроме того, попробуйте добавить файл .npmrc в свой форлдер (c: / users /) с содержимым unsafe-perm=true ; добавьте этот же файл в корень вашего проекта; В крайнем случае: запустите powershell от имени администратора и выполните повышение с помощью Start-Process powershell -Verb runAs - откроется новое окно с расширенными правами PowerShell, которое должно работать

ЭТО ДЕЙСТВИТЕЛЬНО РАБОТАЛО. БЛАГОДАРЮ ВАС.

@ Gayathri-K-2000 Не могли бы вы предоставить более подробную информацию? У меня такая же проблема, но это не сработало. Если возможно, приведите пример того, что вы сделали. Спасибо!

@ Gayathri-K-2000 Не могли бы вы предоставить более подробную информацию? У меня такая же проблема, но это не сработало. Если возможно, приведите пример того, что вы сделали. Спасибо!

Я снял отметку «только для чтения» в свойствах узловых модулей и запустил cmd от имени администратора. Оно работает.

Проверьте, запущен ли у вас процесс узла, отключите его и попробуйте снова.

Это действительно было моей проблемой и здесь. То же самое и с приложениями для реагирования, например, когда вам предлагается установить node-sass - вы не можете этого сделать, пока ваше приложение работает. Спасибо всем!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги