Npm ошибки установки на vagrant/homestead/windows: EPROTO: ошибка протокола, symlink
Я строю свой первый проект в Laravel и пытаюсь использовать Elixir, используя hometead на Windows 8.1. Я столкнулся с известной проблемой npm/vagrant со слишком длинными путями: https://harvsworld.com/2015/how-to-fix-npm-install-errors-on-vagrant-on-windows-because -The-пути-это слишком долго /
Поэтому я сделал редактирование в одну строку, рекомендованное в этой статье (слава богу, за этого парня), а затем запустил (с и без sudo): npm install --no-bin-links
Это продвинуло меня вперед, и теперь я получаю два вида ошибок: некоторые ошибки "Отсутствует доступ при записи" и куча ошибок "EACCES":
Вывод ошибки дает мне следующую подсказку в поиске мусора (я думаю): Пожалуйста, попробуйте снова запустить эту команду от имени пользователя root/Administrator.
Это подводит меня к этому посту, но для меня разница в том, что нет изменений даже после того, как я использую sudo (или обновляю свои пользовательские разрешения, например, так):
судо чоун -R $ USER/usr/local
Судо Чоун -R $ (whoami) ~/.npm
Обновление: затем после предложения ниже я получаю ошибки EPROTO и EXTXTBSY (даже после предложения подсказки переименовать npm-debug.log обратно: ![enter image description here]()
Поэтому я попытался запустить gulp, чтобы увидеть, даст ли он мне подсказки, и вывод ошибок заставил меня сделать:
sudo npm rebuild node-sass
Запуск, который дает мне те же ошибки EPROTO и ETXTBSY, и файл npm-debug.log показывает: ошибка EPROTO: ошибка протокола, символическая ссылка '../node-sass/bin/node-sass' → '/home/vagrant/Код/Семейный Laravel/node_modules/Laravel-эликсир/node_modules/глоток-дерзость/node_modules/.bin/узел-дерзость
Затем, после часа работы над другими вещами, я вернулся свежим и переделал эти шаги, на этот раз получая гораздо меньше ошибок:
-
sudo npm -g установить npm @latest (отлично)
-
sudo npm install --no-bin-links (только ошибка ETXTBSY и ошибка в плагине "последовательность выполнения", в задаче "sass")
-
sudo npm перестроить node-sass --no-bin-links (без ошибок!)
-
глоток (только одна ошибка: не найдено: уведомить-отправить)
Все ближе!
Ответы
Ответ 1
Я пытался выяснить эту проблему в течение нескольких недель. Вот что я сделал, чтобы он работал без использования моей среды хоста:
Я обновил node до последней версии в homestead в соответствии с nodeource.com:
sudo apt-get install --yes nodejs
curl --silent --location https://deb.nodesource.com/setup_4.x | sudo bash -
Я обновил npm до последней версии в усадьбе. Это необходимо сделать после обновления node:
sudo npm -g install [email protected]est
Я запускал npm install в каталоге проекта laravel. Я также должен был использовать силу для установки всех зависимостей для установки:
sudo npm install --no-bin-links
sudo npm cache clear
sudo npm install --force --no-bin-links
Я перестроил node -sass в соответствии с ошибкой gulp:
sudo npm rebuild node-sass --no-bin-links
В течение всего этого процесса, если что-то не удается или после каждой установки, я использовал:
sudo npm cache clear
Мой хост - это окна 10 с новейшим виртуальным боксом, последним бродячим, последним усадьбой. Я использовал git bash в качестве администратора и ssh для бродяг, используя git bash.
До сих пор я только тестировал и подтверждал, что работает мой gulp. Возможно, необходимо перестроить другие зависимости.
Надеюсь, это поможет!
Ответ 2
Причиной вашей первоначальной ошибки EACCES
было то, что вы использовали sudo
без использования опции -H
. НИКОГДА не используйте sudo npm
. ВСЕГДА используйте sudo -H npm
.
Инструкции в Интернете везде (включая документацию по NPM) просто неверны.
Ответ 3
Как многие из вас, кто также настраивает Homestead с помощью Virtual Box...
После поиска решения я решил вернуться к документации Laravel Homestead. К счастью, решение было размещено там:
https://laravel.com/docs/5.8/homestead#provider-specific-settings
Вам просто нужно добавить следующее в вашу усадьбу Vagrantfile.
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
(...)
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
(...)
end
ВАЖНЫЙ
Не забудьте указать в качестве администратора.
homestead up --provision
![enter image description here]()
Ответ 4
Я решил свою проблему с помощью решения, описанного здесь: https://www.prolificinteractive.com/2015/01/21/getting-vagrant-nodejs-windows-play-well-together/
Основной трюк был в:
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/path/to/guest/shared/directory", "1"]
Надеюсь, это поможет кому-то