Как удалить node_modules - глубокая вложенная папка в Windows

229

При попытке удалить каталог node_modules, созданный npm install:

Имя файла (ов) источника больше, чем поддерживается файловой системой. Попробуйте переместиться в местоположение с более коротким именем пути или попробуйте переименовать в более короткое имя (имена), прежде чем пытаться выполнить эту операцию

Я тоже пробовал shift+ deleteи до сих пор с той же проблемой.

leoh
источник
try renaming to shorter name(s) before attempting this operation
Слух
3
Спасибо за ваше предложение, @ SLaks! Я должен был упомянуть, что я тоже это попробовал, но файлы и каталоги многочисленны и глубоки, в нем есть такие вещи, как C: \ Users \ my_user_name \ projs \ backend \ node_modules \ imagemin \ node_modules \ imagemin-optipng \ node_modules \ optipng-bin \ node_modules \ bin-wrapper \ node_modules \ bin-check \ node_modules \ executetable \ node_modules \ meow \ node_modules \ camelcase-keys \ node_modules \ ... и так далее. Нецелесообразно переименовывать файлы вручную, и я надеюсь, что без написания программы найдутся более простые способы
leoh
1
Webstorm может удалить все.
ozzimpact
Я использовал инструмент Long Path Fixer и успешно удалил эту папку .meteor. ( long-path-fixer.en.softonic.com )
Ву Доан
RUN INSTALL, npm install rimraf -g, RUN DELETE, rimraf node_modules
Джинна Балу

Ответы:

438

Так как это лучший результат Google, это то, что работает для меня:

Установите RimRaf:

npm install rimraf -g

И в папке проекта удалите папку node_modules с помощью:

rimraf node_modules

Если вы хотите рекурсивно удалить:

rimraf .\**\node_modules

[ http://www.nikola-breznjak.com/blog/nodejs/how-to-delete-node_modules-folder-on-windows-machine/ ]

реветь
источник
здесь не работает: «Ошибка: ENOTEMPTY, каталог не пустой». и поставляемая ссылка не работает!
olefrank
7
Я автор поста в блоге. @olefrank: это имеет место, когда вы пытаетесь удалить всю папку (не только node_modules), а также, если вы случайно открыли папку в окне проводника. usagidon, спасибо за ссылку на первоисточник.
Никола
2
Это не будет полезно, если у вас нет NodeJS или вы пытаетесь удалить глобальные модули NodeJS после его удаления (вот почему мне пришлось использовать robocopy)
Zorgatone
1
Я добавлю свои 2 цента здесь, чтобы быть более конкретным в вопросе. Вы можете рекурсивно удалить все папки node_modules (используя шаблон rimraf .\**\node_modules
глобинга
1
Подлинник @ Artif3x должен быть помечен как лучший ответ loll! спасибо за подсказку для рекурсивного удаления :-)
Хуан Стоппа
111

Я просто сделал это с помощью Winrar, это может показаться странным решением, но работает очень хорошо.

  • щелкните правой кнопкой мыши на node_modules папке
  • Выбрать Add to archive ... из меню.
  • Откроется диалоговое окно Winrar
  • просто проверьте опцию delete files after archiving
  • Не забудьте удалить node_modules.rar после завершения.


[ОБНОВЛЕНИЕ] Это также работает с 7Zip


Эймен Элкум
источник
7
вау это подлый! +1 Я использовал robocopy, но, видимо, это было исправлено с новым npm или чем-то еще.
erp
1
@ChrisS Как это работает с 7Zip? Особенно при использовании GUI!
Bennos
4
В 2016 году (и особенно в 2018 году) вам не нужно быть таким умным, чтобы удалить кучу файлов.
февраля
73

УДАЛИТЬ только с помощью команды DOS без установки:

Создайте пустую папку «test» на диске C или D и используйте следующую команду DOS

robocopy /MIR c:\test D:\UserData\FolderToDelete > NUL

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

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

Али Адрави
источник
12
лучший ответ, потому что вам не нужно ничего устанавливать
luschn
1
Попробовав rimraf и добавив сетевую папку, это самое чистое решение, которое я нашел. Спасибо, что поделились этим.
Даным
1
отличное решение; легко.
bob.mazzo
2
Я просто сделал небольшое дополнение > NUL. Когда я только попробовал это, консоль дросселировала, и это заняло 15 минут или больше. С перенаправлением на месте, это закончилось примерно через 2
Майк Карон
Забавно, что для удаления некоторых файлов JS вам нужна еще одна библиотека JS.
linuxunil
30

Вы можете использовать Git Bash, чтобы удалить папку:

пример: c: \ users \ olefrank \ projects \ mynodeproject

rm -rf / c / users / olefrank / projects / mynodeproject

olefrank
источник
9
Это не сработало в Windows 7. Директория не пустая ошибка
Мигель Стивенс
5
Вам также необходимо указать флаг -d, который также удалит каталоги.
Stuart.Sklinar
или -fR, чтобы рекурсивно взобраться на вершину и также удалить папку
Dan Kanze
@Karthiga -rf - это флаги / опции / параметры, которые сообщают RM, как выполнять операцию удаления. rговорит, чтобы вернуться в любые подкаталоги и fговорит, чтобы принудительно удалить (не запрашивать). -rfявляется соглашением Unix для одновременного указания нескольких флагов / опций
Тим Кокер
20

Я использовал GitBash для удаления папки de!

rm -r node_modules

Чтобы удалить все, потребовалось время, но у меня получилось!

Бруно Д.М.
источник
Это сработало для меня. Я использовал Rimraf ранее. Римраф не работал, и я попробовал это.
Сайяфф Фарук
Это должно быть главным комментарием. Нет, установка чего-то просто для удаления чего-либо .. В качестве альтернативы просто введитеRD node_modules
Дэвид Макнейл
15

Удалите папку Deep Netsted, например, node_modules в Windows

  1. Опция 1

    Удалить используя rimrafпакет NPM

    • Откройте командную строку и перейдите в папку, в которой node_modulesсуществует папка.

    • Бегать

      rimraf node_modules

    • Отсутствует ОШИБКА rimraf, затем установите

      npm install rimraf -g

    • Когда установка завершится, запустите

      rimraf node_modules

  2. Вариант 2 :

    Детектировать без установки чего-либо

    • Создать папку с именем testна любом диске

      robocopy /MIR c:\test D:\UserData\FolderToDelete > NUL

    • удалить папку testи так FolderToDeleteкак оба пусты

Почему это проблема в Windows?

Одна из глубоко вложенных структур папок - node_modules, Windows не может удалить папку, так как ее имя слишком длинное . Чтобы решить это, простое решение, установите модуль узла RimRaf

Джинна Балу
источник
Error: EPERM: operation not permitted
Трэвис Хитер
1
Исправлено: мне пришлось перезагрузить компьютер. Что-то использовало node_modules, но это давало мне ошибку разрешения.
Трэвис Хитер
8

Попробуйте код Visual Studio

Попробовав много решений, я обнаружил, что это довольно просто. просто откройте проект в Visual code и удалите его. Пользовательский интерфейс может зависнуть на несколько секунд, но он определенно будет работать. Я тестирую, используя для этого папку большого размера node_modules

введите описание изображения здесь

Спасибо

Умар Аббас
источник
Странно работает !! :) Я пытался удалить его даже в безопасном режиме, даже использовал, sudo suно ничего не помогает. Кстати, я работаю на OSX, который никогда не случался со мной, пока я не перешел на Mojave
forloop
6

Вы можете использовать Git Bash, чтобы удалить папку:

пример: c: \ users \ stu \ projects \ mynodeproject

rm / c / users / stu / projects / mynodeproject -rfd

Stuart.Sklinar
источник
5

У меня была похожая проблема, и RD не работал по неизвестной причине.

NPM может избавиться от своего собственного беспорядка, поэтому, если вы сделаете это npm uninstall [module-name]для каждого каталога в node_modules, вы избавитесь от них.

(Я посмотрю, как выполнить пакетный цикл позже, для тех, у кого много зависимостей.)

Крис
источник
5
  1. npm install -g remove-node-modules
  2. перейдите к корню и remove-node-modules
  3. или remove-node-modules path/to/folder

Источник:

https://github.com/j-quelly/node-cleanup

j_quelly
источник
1
Пожалуйста, не просто предоставьте ссылку, ответьте. По крайней мере, добавить некоторые объяснения.
CFI
4

просто запустить для Windows, я не проверял его для других операционных систем

rm -r node_modules

на самом деле, вы можете удалить любую папку с этим.

как rm -r AnyFolderWhichIsNotDeletableFromShiftDeleteOrDelete.

просто откройте gitbash, перейдите в корень папки и выполните эту команду

Надеюсь, это поможет.

Спасибо, Аджай Котнала

Аджай Котнала
источник
2

В Windows, используя Total Commander, все, что вам нужно сделать, это выбрать папку, щелкнув shift+ delete. Не забывай о shiftключе.

Анджей Гис
источник
Это лучшее решение! TC удаляет папку без сбоев, и это действительно быстро
Марина Данст
2

Любой файловый менеджер позволяет избежать таких проблем, например Far Manager

введите описание изображения здесь

Вениамин
источник
2
Я не видел никого, кто бы использовал такой интерфейс уже более 10 лет ... Джей сделал мой день.
Рикки
2

Я просто делаю del node_modules внутри папки моего проекта на PowerShell, он спросит вас, хотите ли вы удалить его и его дочернюю папку, просто нажмите «Y» и все

Roy.B
источник
Простой. Спасибо
Эстин Санни
... \ node_modules имеет детей, и параметр Recurse не был указан. Если вы продолжите, все дети будут удалены с предметом. Вы уверены что хотите продолжить? [Y] Да [A] Да для всех [N] Нет [L] Нет для всех [S] Приостановить [?] Справка (по умолчанию «Y»): Y rd: Каталог C: \ ... \ node_modules \ ngx -color-picker \ dist не может быть удален, потому что он не пустой. rd node_modules -recurse
AUSTX_RJL
1
rd node_modules -recurse
AUSTX_RJL
@AUSTX_RJL rd также работает, но у меня никогда не было проблем с del node_modules .. wired, но tnx в любом случае для другого способа удаления в PS
Roy.B
2

Перепробовал все, но не сработало. Все вышеперечисленные методы ничего не сделали. Наконец я смог удалить через VSCode.

  1. Просто откройте корневую папку с помощью VSCode.
  2. Выберите node_modulesпапку и удалите.
  3. Прибыль. (Это займет, few millisecondsчтобы удалить.)

VSCode-delete.png

Джунаид Атари
источник
2

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

КАК УСТАНОВИТЬ?

  1. Установить rimraf =>npm install rimraf -g

  2. Создайте новый файл с именем delete.bat, установите содержимое, как показано ниже, и скопируйте его вc:\windows\system32\

    delete.bat:

 @ECHO OFF
 ECHO.
 ECHO %CD% 
 ECHO.
 ECHO Are you sure to delete the folder with Rimraf?
 PAUSE
 SET FOLDER=%CD%
 CD /

 rimraf "%FOLDER%"

 rem DEL /F/Q/S "%FOLDER%" > NUL
 rem RMDIR /Q/S "%FOLDER%"

 EXIT
  1. Запустите файл fast-delete.reg для импорта в реестр.

    Готово!

конечный результат

Альпер Эбикоглу
источник
1

Одно из решений, которое я использую:

(Я бы предпочел не устанавливать новое расширение (rimraf) при работе со средами CI.)

  1. А) Переименуйте packages.json во что-то другое. Б) Специально для CI - после установки npm я обычно удаляю файл, а не переименовываю его, но если вам это нужно, вам не нужно этого делать. Это ваш выбор.
  2. запустить npm init- это создаст пустой packages.jsonфайл (без зависимостей)
  3. run npm prune- это сопоставит node_modules с разделом зависимостей packages.json- который теперь пуст в результате шага # 2.
  4. Если вы выбрали # 1.A. шаг, удалить только что созданный packages.json, и переименуйте оригинал packages.jsonобратно к его оригинальному имени.
Rikki
источник
1

Это слишком просто.

Просто удалите все папки внутри node_modules, а затем удалите фактическую папку node_module.

Это работает для меня. Удачи ....

Приянка
источник
Честно говоря, это более быстрый путь, но требуется много терпения. Еще лучше, если вы удалите несколько папок одновременно.
Сантош
1

В Windows мой переход к решению использует rmdirкоманду :

rd /S .\node_modules\

Если это не удается в первый раз - попробуйте еще раз. Также проверьте, есть ли у вас запущенные сценарии, использующие модули ( npm run serveили аналогичные).

крон
источник
0

Из этой статьи MSDN видно, что теперь вы можете обойти ограничение MAX_PATH в Windows 10 v1607 (AKA «годовое обновление»), изменив значение в реестре или с помощью групповой политики.

Moloko
источник
0

Просто используйте powershell ..

Запустите powershell и cd в родительскую папку, а затем:

rm [yourfolder]

как в:

rm node_modules
Даррен Форд
источник
0

Я нахожусь на Windows 10, и я не мог удалить папки с сообщением "каталог не emtpy". Ни rimraf, ни rm -rf не работали.

Копирование пустого текстового файла в каждую папку сделало свое дело - я смог удалить всю папку node_modules.

ralusnom
источник
0

Иногда, даже если вы устанавливаете rimrafглобально, вы можете иметь локальную rimrafзависимость (как правило, у SASS). В этом случае я бы запустил следующие команды:

Выполните первые 2 шага в соответствии с рекомендациями usagidon , если у вас есть проблемы или ошибки, попробуйте

npm uninstall rimraf & rimraf node_modules

это удалит локальный rimrafи использует глобальный

user2869931
источник
0

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

Я столкнулся с проблемами прав доступа в Windows 10, пытаясь удалить папку node_modules после неудачной попытки установки electronic-redux. Кажется, electronic-redux добавил @types в мои node_modules, для которых были установлены неправильные разрешения.

Римраф не работал, поскольку все еще сталкивался с проблемами разрешения.

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

Джейк Коннифф
источник
0

Итак, моя проблема была в том, что у меня была папка .bin внутри node_modules, и я не смог удалить это, я попробовал все вышеупомянутые решения для того же, но ничего не получалось.

Повторяющаяся ошибка: «У вас нет разрешения на удаление папки или ее использование какой-либо другой программой».

Решение, которое я нашел: «У меня на компьютере был установлен антивирус, который по незнанию использовал файлы из папки node_modules».

Я удалил антивирус, или вы можете изменить настройку разрешения в параметре настройки антивируса (зависит от того, какой антивирус у вас есть). Теперь я могу удалить папку node_modules.

Гаурав Бхатт
источник
0

Что сработало для меня:

  1. закрыл консоль диспетчера узлов
  2. закрыл среду разработки Atom (Visual Studio Code), в которой вы находитесь.
  3. затем удалите node_modules

    npm install rimraf -g 
    rimraf node_modules
Самант
источник
0

Способ PowerShell:

PS > rm -r -force node_modules

# The same, but without using aliases
PS > Remove-Item -Recurse -Force node_modules

И если вы хотите удалить все node_modulesв подкаталогах:

Примечание. Потенциально опасно, так как оно рекурсивно удаляет. Будьте уверены, что вы здесь делаете

PS > dir -Path . -Filter node_modules -recurse | foreach {echo $_.fullname; rm -r -Force $_.fullname}
dgellow
источник
0

Вы можете использовать другой пакет npm специально для этой цели. Устанавливая его локально в папку с помощью

npm i rm-node-modules-recur

Если вы хотите, вы также можете установить его глобально с ключом -g.

Если установлен локально, вы можете вызвать двоичный файл из текущей директории node_modules.bin \ используя

 .\node_modules\.bin\rmnodes "<top level directory within quotes>"

Если вы выбрали глобальную установку, просто используйте

rmnodes "<top level directory within quotes>"

и это все .. этот пакет в конечном итоге будет рекурсивно удалять node_modules из всех подкаталогов (в моем случае около 60 нечетных папок). см. прикрепленный снимок. используя rm-node-modules-recur

Маниш Парихар
источник
-1

Продвинуть немного для нескольких папок ...

Если у вас есть папка проекта с несколькими «builds», которая содержит «node_module». Подобно:

C:/Project/build-1/node_modules
C:/Project/build-2/node_modules
C:/Project/build-3/node_modules
C:/Project/build-4/node_modules

Вы хотите удалить все папки начинается с "сборки"

! Сначала установите nodejs и rimraf как указано выше!

Затем перейдите к пути с проектом и выполните команду PowerShell

cd  C:/Project/
Get-ChildItem build* | foreach {rimraf -Path $_.FullName}

Это возьмет

Айдар Гатин
источник
-1

Вы можете сделать простой пакет на основе ответа @ mike-caron, чтобы вам не приходилось каждый раз вводить всю robocopyкоманду, а не просто вводить путь к выбранной папке:

@echo off
ECHO What Directory would you like to empty?
ECHO Current path: %cd%
SET /p UserInputPath=Input relative path to directory:
ROBOCOPY /MIR empty_dir %cd%\%UserInputPath% > NUL
PAUSE

Здесь вы используете пустой каталог с именем empty_dir в robocopyкоманде, которая должна находиться в том же каталоге, что и пакетный файл, чтобы это работало. После того, как пакетный файл завершит свою работу, выбранный каталог и empty_dir будут пустыми, чтобы их можно было удалить.

Я сделал простой командный файл, который создает пустую папку и после robocopyвыполнения команды удаляет как пустую папку, так и выбранную папку, так что единственное, что вам нужно сделать, это ввести путь к выбранной папке, которую вы хотите удалить. Это быстро и практично, если вы не хотите устанавливать такие вещи, как Rimraf . Вы можете скачать его здесь https://github.com/5imun/WinCleaner

Šime
источник
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - Из обзора
Шерил Хохман