npm ERR! Помилка: EPERM: операція заборонена, перейменуйте


109

Коли я виконую, npm installя отримую цю помилку

npm ERR! Помилка: EPERM: операція заборонена .DELETE '

  • Я запускаю cmd як адміністратор
  • Я бігав npm cache cleanраніше
  • Я переконався, що всі інші програми не мають нічого node_modulesвідкритого

2
запуск cmd, як адміністратор працював на мене
Гомер

У моєму випадку мені довелося запустити його як звичайний користувач (а не адміністратор), і він спрацював. Здається, це конфлікт дозволів користувача. Але здається, що всі інші рішення, що даються тут npm clean, npm install не потрібні. Випуск дозволу користувача. Якщо більше людей можуть підтвердити, я можу розмістити нову відповідь.
MG Developer

Відповіді:


124

У моїй ситуації це допомогло. Перш ніж приступити до виконання цих команд, закрийте всі екземпляри коду VS.

  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 не могло його змінити.
Джордж

29
Цей же коментар стосується коду VS для Windows… закрийте його, і проблема зникає
Мартін Керн

1
Для мене у мене був ще один процес вузла, у моєму випадку json-сервер. Одного разу я зупинив, що пакет встановлено без помилок.
EddieB

Для мене помилки на кшталт "ERR! Enoent Це пов'язано з тим, що npm не в змозі знайти файл" було вирішено шляхом припинення всіх примірників для візуального коду студії.
Абхішек

Іноді ми наглядаємо за використанням webpack, який запакував усі js-файли, включаючи не оновлені посилання модуля, наприклад. app.js. Тому після оновлення npm спробуйте запустити npm run watch. Після цього в моєму випадку відповідні посилання модулів були оновлені у новому файлі app.js.
Пітер ван дер Лелі

21

Ні package.json, але з будь-якої причини моя node_modules/стала лише для читання. Скидання цього виправлено.


«Скидання» для мене означало 1.закриття VS, 2.видалення node_modulesз FileExplorer 3.Перезапуск мій PC 4.Біг npm install --force. Тоді ОКОНЧО це спрацювало.
EGC

21

Я змусив це працювати, коли намагався встановити npm з можливістю примусового вибору віддалених ресурсів, навіть якщо локальна копія існує на диску. Спробуйте запустити

npm install --force

Оновлено Для деяких моїх колег це рішення не працює. Але ми спробували використовувати пряжу замість npm. Він працює (і швидше), без всяких проблем

yarn install [package-name]

Інші люди запропонували вимкнути програмне забезпечення AV. Для мене в мережі, в якій я перебуваю, це був не варіант. Прапор --force вирішив цю проблему для мене
user2590928

Я вирішив свою проблему лише за допомогою пряжі, тому рекомендую дати йому постріл.
Венло Полотто

20

Якщо ви хочете уникнути цього --forceваріанту (який завжди є кращим підходом) , пропоную переконатися, що ви перестали виконувати проект, оскільки це, як правило, головна причина блокування файлів майже в 90% випадків, які я бачив

Пропоную наступні кроки в цьому порядку:

1- У кутовій зупинці ng sта в React зупинці npm start зазвичай вирішується ця проблема, тому що зазвичай ця помилка трапляється, якщо сервер розробки запускає проект, оскільки він блокує деякі файли, а потім npm не може оновити їх, тим самим кидаючи цю помилку

2- Якщо вищезгадане не працює, спробуйте закрити редактор коду, у якому відкрита робоча область (можливо, він блокував деякі файли чи щось)

Тому спробуйте закрити редактор коду та запустити:

npm install

3- Якщо все-таки це не працює, можливо, ви можете спробувати --forceваріант

npm install --force

2
Це була моя проблема, я rimraff'd папку node_modules через термінал на VS Code - чомусь він не зовсім видалив node_modules з моєї файлової системи, і він був заблокований. Доки я не закрив це вікно коду VS і відкрив його назад, щоб його фактично видалили, і я міг запустити npm встановити знову.
Стю Фурлонг

13

Я отримував ту саму помилку, і відповідно до https://github.com/Medium/phantomjs/isissue/19 це може бути спричинене вашим антивірусним програмним забезпеченням. Я відключив міну протягом тривалості встановлення та виконав "npm install" на cmd як адміністратор, і він працював. Сподіваюся, це допомагає.


1
На github.com/npm/npm/isissue/12059 це було виправлено. Жодного слова щодо того, у який випуск він ввійде. За коментарями, відключення AV не завжди працює.
користувач1821052

У моєму випадку мені довелося закрити SourceTree під час встановлення.
Деян

13

Для мене я просто закрив редактор коду (код VS), а потім запустив ту саму команду. І це вирішує для мене питання.


9

Як зазначив у коментарі Мартін Керн, закриття Visual Studio вирішило для мене ці проблеми з дозволом npm. Очевидно VS іноді блокує файли в node_modules.


8

Я отримував те саме. Я ніде цього не знайшов, але мене вразило, що наші віртуальні машини прагнуть змінювати файли до стану, призначеного лише для читання. Тож я відкрив package.jsonвластивості файлу та відмінив вибір Read-onlyна вкладці "Загальні".

Кроки

  1. Перейдіть до package.jsonфайлу.
  2. Клацніть правою кнопкою миші та виберіть Властивості .
  3. На вкладці Загальні , розділ Атрибути , зніміть вибір лише для читання .
  4. Клацніть Застосувати, щоб застосувати зміни.

Читайте лише для мене, хоча початковою проблемою було те, що я зазвичай використовую код для встановлення. У цьому випадку я відкрив новий примірник програми у Visual Studio, щоб я міг перенести деякі зміни зі старої версії, і VS негайно почала встановлювати себе. Потім я відкрив код, щоб запустити npm install, як зазвичай, і обидва додатки потрапили в запаморочення. Після декількох помилок я потім масово скинув вузлові модулі з робочої кореневої версії нашого додатку, щоб дозволити мені підтримувати зміни змін. Цю папку читали лише для читання, а потім здійснювали блокування речей.
Matrim

8

Це типова помилка, викликана антивірусом. Існує рішення для таких випадків, як моя, коли я не можу відключити A / V (Політика компанії).

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

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

Шукайте це твердження:

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

Всередині цього твердження є час очікування, яке може зробити повторний випробування у випадку помилки. Проблема полягає в тому, що в деяких випадках після закінчення тайм-аут файл все ще блокується A / V. Рішення вириває тайм-аут і пускає це твердження у цикл. Зміни з попереднім коментом прокоментували:

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

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

після цього більше не потрібно використовувати sudo для npm-команд, оскільки метадані перевіряють права доступу до файлів / директорій Windows та Linux.


2

У мене була така ж проблема після оновлення до npm до 5.4.2, npm почало давати ту саму помилку для більшості команд npm. Деякі рішення пропонують запустити його --no-optional, але це не завжди працювало.

Інші пропонували понизити ціну, але я не хотів її знижувати.

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

Тож я оновив свій npm:

npm i -g npm

і відтоді добре працював.


1

npm не вдалося мені scandir:

npm install -g webpack

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

Сподіваюсь, це допомагає комусь, хто бореться.


1

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


1

Для деяких із них папка AppRoot \ npm може бути проблемою. Іноді папка AppRoot позначається як мережа, що ділиться загалом, і тому Антивірус блокує вміст. Перейдіть посилання нижче для повного рішення.

https://alastaircrabtree.com/fixing-intermittant-eperm-operation-not-permitted-on-npm-install/

Я сподіваюся, що це допомагає.


1

Я зробив наступне:

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

1

Відкрийте командний рядок як адміністратор і перейдіть до місця розташування проекту, а потім запустіть npm install. це працювало на мене.


1

У моєму випадку працює npm: v6.9.0&& node: v10.16.1на Windows, я повинен був запустити мій CLI (GIT Баш) в якості адміністратора . Потім пакети були встановлені без будь-яких попереджень / помилок


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 --yes


0

Запуск команд, коли Super Admin працював на мене. Повторіть спробу після закриття редактора, в якому ви працюєте.


0

Я теж боровся з цим. Я, нарешті, вирішення, яке добре працює, якщо ви використовуєте nvm:

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

і це все.


0

Це може бути пов’язано з антивірусним програмним забезпеченням. Якщо ви не можете відключити AV, ви можете спробувати змінити своє глобальне місце установки NPM під час встановлення вузла в каталозі APPDATA, який активно контролюється AV Engines. Спробуйте виконати наступні команди-

Префікс npm config set "ВАШЕ МИТНЕ ОБЛАСТЬ" npm config set кеш "YOUR CUSTOM LOCATION"

Видаліть каталог node_modules та встановіть свій пакет ще раз.


0

У моєму випадку налаштування typescript.disableAutomaticTypeAcquisitionв Visual Studio Code, trueздавалося, допомагає.



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 over.


0

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

  1. Закрити вкладку терміналу
  2. Відкрийте нову вкладку терміналу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.