ошибка "ETXTBSY: текстовый файл занят" на установке npm

При запуске npm install [any package] или даже npm install на homestead я получаю следующую ошибку:

npm ERR! ETXTBSY: text file is busy, rmdir '/home/vagrant/valemus-shop-starter/valemus-shop/node_modules/fsevents'

Журнал отладки можно увидеть здесь

  • Box 'laravel/homestead' (v3.0.0)
  • Узел: v8.2.1
  • НПМ: 5.3.0

Я попытался удалить каталог fsevents, однако его не существует.

Как это исправить?

Ответ 1

Просто выпустите "npm install" в Windows, а не в Homestead. Конечно, вам нужно иметь npm для окон, установленных для этого.

Ответ 2

Я столкнулся с тем же делом на Windows 10 + VirtualBox (VBox) + Vagrant + Laravel Homestead, когда я хотел изменить реакцию на интерфейс.

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

Остановил бродягу:

vagrant halt

Добавлено следующее в раздел конфигурации Vagrantfile в каталоге Homestead

  config.vm.provider "virtualbox" do |v|
        v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
  end

запустил cmd как admin

затем vagrant up

и vagrant ssh

cd для разработки dir

затем удалите dir_modules с помощью rm -rf node_modules/ if any

а затем sudo npm install && npm run dev

и все это было установлено без каких-либо предупреждений или ошибок.

Это результат двух часов чтения :)

Редактировать:

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

Устанавливайте узел на вашей машине Windows

Затем cd в каталог разработки и запустите npm install из Windows, и вы получите тот же результат.

Вы также можете инициировать npm run watch из окон cmd.

Это помогло мне снять нагрузку с VM и позволить Windows делать часы и получать уведомления о просмотре npm run watch в Windows.

ура

Ответ 3

Тоже самое произошло со мной

Моя среда - linux

fsevents - это модуль, посвященный mac

Попробуйте выполнить следующую команду

npm install --no-optional

Ответ 4

Я изо всех сил пытался справиться с этой проблемой на своей машине с Windows 10 с Homestead. И после долгих усилий я решил это таким образом;

удалите папку node_modules.

Вы запускаете эти команды на своем оконном терминале:

npm install --no-bin-links (After some experience it is necessary for virtual machines)
npm rebuild --no-bin links

Обычно он работает после этих команд, но если вы принимаете эту ошибку

"Узел Sass не смог найти привязку для вашей текущей среды:

выполните эту команду на своем терминале Homestead для установки узла Sass для Linux.

npm rebuild node-sass

если он не работает, попробуйте использовать пряжу. Удалите узловые модули папки package.json.lock и yarn.lock (если есть) файлы и введите

yarn install

Если все они не сохраняют вас, используйте все команды npm из виртуальной машины. Это будет работа.

Я надеюсь, это поможет вам...

Ответ 5

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

  1. Обязательно обновите узел до последней версии.

Для обновления вы можете установить n

sudo npm install -g n

Тогда просто:

sudo n latest
  1. Установите сценарии Node для использования переменных среды на разных платформах

При бродяжничестве:

npm install --save-dev cross-env
npm install 
npm run dev 

Это сделало трюк, хотя я провел целый день, найдя правильное решение (https://www.npmjs.com/package/cross-env)

Ответ 6

У меня была проблема с "npm install" тоже, я использую Windows 10. Наконец, я исправился, что я сделал, так это то, что я вышел из "vagrant ssh" и запустил "обновление брандмауэра", затем "npm install" работал. Обратите внимание, что я запускал "обновление брандмауэра" и "npm install" из "бродячего ssh". Надеюсь, поможет.

Ответ 7

Я все еще получал ошибку, даже после выполнения

  config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, 
     "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
  end

как предложил Бабак Бандпей

Оказалось, что существует еще одна неприятная проблема ограничения символа пути файла. Это происходит довольно часто, если вы используете узловой модуль с длинным именем. Вы можете легко решить эту проблему, выполнив следующие шаги после vagrant ssh в linux vm:

  1. Создайте папку node_modules в домашней папке mkdir ~/node_modules
  2. Добавьте символическую ссылку в папку "node_modules", которую вы только что создали в папке проекта

    ln -sf ~/node_modules/vagrant/your-project-folder

Это решение гарантирует, что все узловые модули хранятся в домашнем каталоге вместо синхронизированной папки. Исходный источник: https://blog.rudylee.com/2014/10/27/symbolic-links-with-vagrant-windows/

Надеюсь, это поможет кому-то с подобной проблемой, спасибо!

Ответ 8

Переход на версию npm до 5.7.1 помогло.

Команда, используемая для понижения: npm install -g [email protected]

Я использую Win10, Vagrant, Ubuntu v14.04 и Node v8.11.4

Ответ 9

Сначала мне пришлось удалить папку node_modules, затем я сделал

sudo chmod a+x .

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

sudo npm install --no-bin-links

никакие связи с бункером не нужны в бродяжнике из моего опыта, потому что эти виртуальные машины не поддерживают ссылки на бин (исправьте меня, если они ошибаются). Тогда я просто

sudo npm run dev

в этот момент некоторые люди могут не столкнуться с обнаруженной ошибкой cross-env. В этом случае просто удалите cross-env в файле package.json и запустите его снова. Это сработало для меня, но некоторые люди все еще сталкиваются с одной и той же проблемой. Может стоить дать ему шанс.