npm ERR! Ошибка: EPERM: операция не разрешена, переименовать

112

Когда я выполняю, npm installя получаю эту ошибку

npm ERR! Ошибка: EPERM: операция не разрешена, переименуйте C: \ projects ****** \ node_modules \ response-async-script '->' C: \ projects ******* \ node_modules.react-async-script .УДАЛИТЬ'

  • Я запускаю cmd как администратор
  • Я бежал npm cache cleanраньше
  • Я убедился, что все остальные приложения не имеют отношения к node_modulesоткрытию
Робин
источник
2
запуск cmd от имени администратора работал у меня
Гомер
В моем случае мне пришлось запустить его как обычный пользователь (не администратор), и он сработал, похоже, это конфликт прав пользователей. Но похоже, что все остальные решения, приведенные здесь, npm clean, npm install не требуются. Это проблема с правами пользователя. Если больше людей подтвердят, я могу опубликовать новый ответ.
MG Developer

Ответы:

129

В моей ситуации это помогло. Прежде чем приступить к выполнению этих команд, закройте все экземпляры VS Code.

  1. очистить кеш с

    npm cache clean --force
  2. установите последнюю версию npm глобально от имени администратора:

    npm install -g npm@latest --force
  3. очистить кеш с

    npm cache clean --force
  4. Попробуйте еще раз установить свой компонент.

Надеюсь, это решит вашу проблему. В противном случае вы можете временно отключить антивирусную программу и попробовать еще раз.

Римский
источник
1
спасибо @ kamil.ka, это была моя проблема с Windows. Atom блокировал package.json, поэтому npm install не мог его изменить.
Джордж
30
Тот же комментарий относится к VS Code в Windows… закройте его, и проблема исчезнет
Мартин Кирн
1
Для меня у меня был запущен другой процесс узла, в моем случае json-server. Как только я остановил установку пакета без ошибок.
EddieB 04
Для меня ошибки типа «ERR! Enoent This is related to npm not could find a file» были устранены путем завершения всех экземпляров кода Visual Studio.
Abhishek
Иногда мы наблюдаем за использованием веб-пакета, который упаковывает все файлы js, включая ссылки на необновленные модули, например. app.js. Итак, после обновления npm попробуйте запустить npm run watch. После этого в моем случае соответствующие ссылки на модули были обновлены в новом файле app.js.
Питер ван дер Лели
23

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

npm install --force

Обновлено У некоторых из моих коллег это решение не работало. Но мы пробовали использовать пряжу вместо npm. Он работает (также быстрее) без каких-либо проблем все время

yarn install [package-name]
шри
источник
Другие люди предлагали отключить антивирусное программное обеспечение. Для меня в сети, в которой я нахожусь, это не вариант. Флаг
--force
Свою проблему я решил только с помощью пряжи, поэтому рекомендую ему попробовать.
Анджело Полотто
22

Нет package.json, но по какой-то причине my node_modules/стал доступен только для чтения. Сброс этого исправил.

Амит Бхосле
источник
«Сброс» для меня означало 1.закрытие VS, 2.удаление node_modulesиз FileExplorer 3.Перезапуск мой PC 4.Бег npm install --force. Тогда НАКОНЕЦ это сработало.
EGC
21

Если вы хотите избежать этого --forceварианта (что всегда является лучшим подходом) , я предлагаю убедиться, что вы прекратили запуск проекта, поскольку это обычно основная причина блокировки файлов почти в 90% случаев, которые я видел.

Я предлагаю следующие шаги в таком порядке:

1- В остановке Angular ng sи в React остановка npm start обычно решает эту проблему, потому что обычно эта ошибка возникает, если сервер разработки запускает проект, поскольку он блокирует некоторые файлы, а затем npm не может их обновить, что вызывает эту ошибку

2- Если вышеуказанное не работает, попробуйте закрыть редактор кода, в котором открыто рабочее пространство (возможно, он блокировал какие-то файлы или что-то в этом роде)

Поэтому попробуйте закрыть редактор кода и запустить:

npm install

3- Если все еще не работает, возможно, вы можете попробовать --forceвариант

npm install --force
Ахмед Элькусси
источник
2
Это была моя проблема, я нарисовал папку node_modules через терминал в VS Code - по какой-то причине он не совсем удалил node_modules из моей файловой системы и заблокировал ее. Не было, пока я не закрыл это окно VS Code и не открыл его резервную копию, он действительно был удален, и я мог снова запустить npm install.
Stu Furlong
13

Я получал ту же ошибку, и, согласно https://github.com/Medium/phantomjs/issues/19, это могло быть вызвано вашим антивирусным программным обеспечением. Я отключил свой на время установки и выполнил "npm install" в cmd от имени администратора, и это сработало. Надеюсь это поможет.

вмалдосан
источник
1
Согласно github.com/npm/npm/issues/12059 это исправлено. Нет ни слова о том, в какой выпуск он войдет. Согласно комментариям, отключение AV не всегда работает.
user1821052 04
В моем случае мне пришлось закрыть SourceTree во время установки.
Деян
13

Для меня я просто закрыл редактор кода (VS Code), а затем запустил ту же команду. И это решает проблему для меня.

Сифат Хак
источник
9

Как отметил Мартин Кирн в комментарии, закрытие Visual Studio решило эти проблемы с разрешениями npm для меня. Очевидно, VS иногда блокирует файлы node_modules.

Джейсер
источник
8

Я получал то же самое. Я нигде этого не нашел, но меня осенило, что наши виртуальные машины склонны переводить файлы в состояние только для чтения. Итак, я открыл package.jsonсвойства файла и снял выделение Read-onlyна вкладке «Общие».

Шаги

  1. Заходим в package.jsonфайл.
  2. Щелкните правой кнопкой мыши и выберите Свойства .
  3. На вкладке « Общие » в разделе « Атрибуты » снимите флажок « Только для чтения» .
  4. Щелкните Применить, чтобы применить изменение.
christo8989
источник
Только для чтения для меня, хотя исходная проблема заключалась в том, что я обычно просто использую код для установки. В этом случае я открыл новый экземпляр приложения в Visual Studio, чтобы перенести некоторые изменения из старой версии, и VS сразу же начал установку. Затем я открыл код для запуска npm install, как обычно, и оба приложения начали нервничать. После нескольких неудач я затем массово сбросил node-modules из рабочей корневой версии нашего приложения, чтобы позволить мне вернуть изменения в порт. Эта папка была доступна только для чтения, поэтому затем продолжили блокировку.
Matrim
8

Это типичная ошибка, вызванная антивирусом. Существует обходной путь для таких случаев, как мой, когда я не могу отключить аудио / видео (политика компании).

Вам нужно изменить polyfills.jsвнутренний Npmпакет:

[NODE_HOME]/node_modules/npm/node_modules/graceful_fs/polyfills.js

Ищите это утверждение:

if (process.platform === "win32") {

Внутри этого оператора есть тайм-аут для повторной попытки в случае ошибки. Проблема в том, что в некоторых случаях после тайм-аута файл все еще заблокирован аудио / видео. Решение состоит в том, чтобы убрать тайм-аут и запустить этот оператор в цикл. Комментарий к изменению с предыдущим кодом:

if (platform === "win32") {

fs.rename = (function (fs$rename) { return function (from, to, cb) {
  var start = Date.now()
  var backoff = 0;
  fs$rename(from, to, function CB (er) {
    if (er
        && (er.code === "EACCES" || er.code === "EPERM")
        /*&& Date.now() - start < 60000*/) {
            console.log("Retrying rename file: " + from + " <> " + to)
            fs$rename(from, to, CB);
      /*setTimeout(function() {
        fs.stat(to, function (stater, st) {
          if (stater && stater.code === "ENOENT")
            fs$rename(from, to, CB);
          else
            cb(er)
        })
      }, backoff)*/
      if (backoff < 100)
        backoff += 10;
      return;
    }
    if (cb) cb(er)
  })
}})(fs.rename)
}
Бруно Гуайтанеле
источник
Вы, сэр, настоящий MVP.
Атанас Корчев
4

В моем случае что-то заблокировалось, и быстрая перезагрузка разрешила это.

Кон
источник
4

У меня была эта проблема несколько раз, только в Windows я пробую их в обычном порядке.

  1. npm install --force
  2. Проверьте, установлен ли node_modules только для чтения и удалите, если он
  3. Удалить node_modules/
  4. Проверьте, открыт ли какой-либо редактор, который может иметь доступ к корневой папке проекта.
  5. Перезагрузка :(

Обычно проблема решается попыткой npm installпосле одного из этих шагов.

Шриватса Хариш Венкатарамана
источник
2

Попытка переименовать файл в другое уже существующее имя может вызвать EPERMошибку в Windows.

Зак Блумквист
источник
2

Я перемонтировал свои оконные диски с флагом метаданных и мгновенно помог: https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/

после этого больше не нужно использовать sudo для команд npm, поскольку метаданные контролируют права доступа к файлам / каталогам windows и linux.

Лимон
источник
2

У меня была такая же проблема после обновления до npm до 5.4.2, npm start выдает ту же ошибку для большинства команд npm. Некоторые решения предлагают запустить его --no-optional, но это не всегда срабатывало.

Другие предлагали перейти на более раннюю, но я не хотел отказываться от нее.

Я подозревал, что возникла проблема с установкой, не знал, в чем именно.

Итак, я повторно обновил свой npm:

npm i -g npm

и с тех пор работал нормально.

Салимд83
источник
1

npm терпел неудачу для меня scandir:

npm install -g webpack

... что может быть вызвано попыткой npm "изменить" файлы, которые потенциально были заблокированы другими процессами, как упоминалось здесь и в нескольких других потоках github. После принудительной очистки кеша, проверки кеша, запуска от имени администратора, отключения AV и т. Д. Решение, которое на самом деле сработало для меня, закрывало все, что могло блокировать файлы (т.е. перезагружать мой компьютер).

Надеюсь, это поможет кому-то, кто борется.

kmk09k
источник
1

У меня такая же проблема. Причина ошибки - неподдерживаемые символы в пути к файлу. Заменил кириллицу на английский - помогло.

Алексей Копасов
источник
1

Я сделал следующее:

  1. Обновил npm до последней версии: npm install -g npm@6.5.0-next.0
  2. удалил папку npm-cache из: c:/users/[username]/AppData/Roaming/npm-cache
  3. Очистил ли кеш: npm cache clean --force
  4. Запустил npm install.
RV.
источник
1

Откройте командную строку от имени администратора и перейдите в расположение проекта, а затем запустите npm install. у меня это сработало.

Ашутош Двиведи
источник
1

В моем случае при запуске npm: v6.9.0&& node: v10.16.1on Windowsмне пришлось запустить свой CLI (git bash) от имени администратора . Потом пакеты устанавливались без предупреждений / ошибок

Эбрам Халил
источник
0

Мой ответ - npm cache clean --forceсначала сделать . Затем запустите, npm install -g npm@5.3.0чтобы установить версию npm 5.3.0. для меня эта версия npm работает без проблем.

УмаШанкар
источник
0

Просто удалите папку пакета с пути глобальных пакетов npm. затем переустановите пакет. Обратите внимание, что пакеты глобально установлены в: C: \ Users \ your-name \ AppData \ Roaming \ npm \ node_modules

Рамин Ар
источник
0

У меня была такая же проблема в Windows 10. Просто выполните следующие действия:

  • Откройте cmd от имени администратора.

  • установить обновленный пакет npm.

  • npm i -g npm

  • npm init - да

Ананд Тивари
источник
0

У меня работал запуск команд от имени суперадминистратора. Повторите попытку после закрытия редактора, в котором вы работаете.

Паллав Бохара
источник
0

Я тоже боролся с этим. Я нашел решение, которое отлично работает, если вы используете nvm:

cd ~/.nvm/versions/node/{your node version}/lib/ npm install npm

и это все.

тысячелетие
источник
0

Это может быть связано с вашим антивирусным программным обеспечением. Если вы не можете отключить AV, вы можете попробовать изменить свое глобальное место установки NPM, поскольку узел устанавливается в каталог APPDATA, который активно отслеживается AV Engine. Попробуйте выполнить следующие команды -

npm config set prefix "YOUR CUSTOM LOCATION" npm config set cache "YOUR CUSTOM LOCATION"

Удалите каталог node_modules и снова установите пакет.

user3544913
источник
0

В моем случае настройка typescript.disableAutomaticTypeAcquisitionв Visual Studio Code trueпоказалась мне полезной.

Маркус Хеттих
источник
0

Закрытие PHPStorm устранило проблему для меня.

Руаларк
источник
0

Я закрыл VS, удалил папку node_modules.

Потом побежал:

npm i -D -E clean-webpack-plugin@3.0.0 css- 
loader@3.4.2 html-webpack-plugin@3.2.0 mini-css- 
extract-plugin@0.9.0 ts-loader@6.2.1 typescript@3.7.5 
webpack@4.41.5 webpack-cli@3.3.10 

Затем пришлось изменить свойство, чтобы оно не читалось только в папке node_modules после завершения работы.

Потом побежал:

npm i @microsoft/signalr @types/node

Затем открыл резервную копию проекта в VS, и package.json выглядел правильно с зависимостями.

В том же духе, что и другие, говорящие о чтении только в папке node_modules и закрытии VS для запуска npm install поверх.

Сэм
источник
0

Если у вас возникла проблема с PHP Storm:

  1. Закройте вкладку терминала
  2. Откройте новую вкладку терминала
2Fwebd
источник