Vagrant VirtualBox Local Dev Env, Ubuntu, Yarn, Vue CLI 3 - Проблемы - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь настроить локальную среду разработки, состоящую из:

  • Ubuntu server vagrant box
  • Мой существующий проект vuejs, созданный с использованием Vue CLI 3 и переданный vagrant через synced_folder
  • Затем запустите yarn run serve и получите доступ к нему на моем хосте, используя переадресацию портов на бродячее поле.

Справка:
Я разработал проект vue CLI 3 на своем ноутбуке Ubuntu 16.04, который работает хорошо, однако я хочу переместить его в бродячую коробку, чтобы сохранить порядок на моей локальной машине. В настоящее время я использую yarn run serve, который работает хорошо. Я хочу иметь возможность запускать эту команду в новой бродячей среде разработки.

Краткое изложение проблем / вопросов:

  • команда vue не найдена после установки ее зависимостей
  • проблем с разрешением, выплевываемых пряжей при попытке запустить yarn run serve внутри бродячей коробки
  • появляется сообщение fsevents@1.2.4, когда yarn global add @vue/cli

Подготовка локальной среды разработки:

Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

    config.vm.define "webserver_dev" do |webserver_dev|

        webserver_dev.vm.box = "ubuntu/xenial64"
        webserver_dev.vm.network "private_network", ip: "192.168.33.10"
        webserver_dev.vm.network "forwarded_port", guest: 80, host: 8888
        webserver_dev.vm.network "forwarded_port", guest: 8080, host: 8080
        webserver_dev.vm.hostname = "develop.dev"

        webserver_dev.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", "fmode=666"]

        webserver_dev.ssh.forward_agent = true

        webserver_dev.vm.provider "virtualbox" do |vb|
            vb.memory = "1824"
            vb.cpus = "2"
        end
    end
end

Предоставление бродяги: ubuntu/xenial64 (virtualbox, 20180802.0.0):

sudo apt update && sudo apt upgrade  
sudo apt install build-essential libssl-dev -y   

# install node and npm:
cd ~  
curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh  
sudo bash nodesource_setup.sh    

# install yarn
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -  
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list  
sudo apt-get update && sudo apt-get install yarn    

# Show installed versions  
yarn -v  (outputs 1.9.4)  
node -v  (outputs v10.9.0)  
npm -v  (outputs 6.2.0)   

Проблемы / вопросы Вывод:
Когда я перехожу к моей существующей папке проекта vue и запускаю yarn run serve внутри vagrant ssh, я получаю следующую ошибку:

yarn run v1.9.4
$ vue-cli-service serve
/bin/sh: 1: vue-cli-service: Permission denied
error Command failed with exit code 126.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Когда я бегу sudo yarn run serve
(Мне все равно не нужно запускать это как root, но:)

yarn run v1.9.4
$ vue-cli-service serve
/bin/sh: 1: vue-cli-service: Permission denied
error Command failed with exit code 126.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Бег vue --version

vagrant@cc:~$ vue --version
No command 'vue' found, did you mean:
 Command 'vpe' from package 'texlive-latex-extra' (universe)
vue: command not found

Выход из режима работы yarn global add @vue/cli
Как показано в официальной установке vue-cli документация
ПРИМЕЧАНИЕ: Полученное сообщение fsevents@1.2.4. Может ли это быть причиной проблем?

vagrant@cu:~$ yarn global add @vue/cli
yarn global v1.9.4
[1/4] Resolving packages...
[2/4] Fetching packages...
[----------------------------------------------------------------------------------------------------------------------------------------] 0/617(node:7694) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
info fsevents@1.2.4: The platform "linux" is incompatible with this module.
info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "@vue/cli@3.0.1" with binaries:
      - vue
Done in 58.25s.

Резюме:
Кто-нибудь достиг локальной среды разработки, где он может успешно запускать yarn run serve внутри нее и получать доступ к результату на своем хост-компьютере?

Мне было бы очень интересно узнать, как другие разработчики подходят к своей локальной разработке для проектов vue js, у которых также есть другие службы, требующие обратных прокси (например, приложение узла js, работающее на другом порту).

Я потратил очень много времени, пытаясь настроить это безрезультатно. Может быть, эти инструменты просто плохо играют вместе. Если вы думаете, что могли бы помочь, я был бы очень благодарен. Спасибо

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Вам необходимо использовать sudo при установке vue-cli.

Документация vue-cli на https://cli.vuejs.org/guide/installation.html гласит:

Чтобы установить новый пакет, используйте одну из следующих команд. You нужны права администратора для их выполнения, если npm не был устанавливается в вашей системе через менеджер версий Node.js (например, n или NVM).

npm install -g @vue/cli
# OR
yarn global add @vue/cli
0 голосов
/ 29 августа 2018

Временное решение: - вдохновлено этой публикацией

После дальнейшего устранения неполадок я обнаружил, что проблема, безусловно, связана с правами доступа (не относится к vue-cli). Я думаю, что, поскольку мой бродяга использует virtualbox, существует проблема виртуального ящика с символическими ссылками из синхронизированной папки с моего хоста, которая может изменить разрешения и не дает команде chmod оказывать какое-либо влияние на файлы. В моем случае флаг выполнения из каталога node_modules / .bin был неисполняемым.

Для тех, у кого похожие проблемы, вот мой текущий обходной путь к этой проблеме (Сделайте одолжение и прочитайте https://github.com/hashicorp/vagrant/issues/713 Хотелось бы, чтобы я нашел его раньше!):

1) скопировать проекты package.json в глобальный каталог пряжи: /home/vagrant/.config/yarn/global/

cp /var/www/project/package.json /home/vagrant/.config/yarn/global/

2) Установите глобальные зависимости проектов в каталоге пользователей пряжи:

cd /home/vagrant/.config/yarn/global
yarn install

3) Теперь возвращение к проекту и запуск yarn run serve работает, поскольку он использует модули node_modules из /home/vagrant/.config/yarn/global/node_modules/.bin/, которые имеют правильные права на исполняемый файл.

cd /var/www/project/package.json
yarn run serve

Пример причины проблемы:
1) Измените каталог на ваш проект и ls -l, чтобы увидеть разрешения:

cd /var/www/project/node_modules/.bin
ls -la

Выходы:

lrw-rw-rw- 1 vagrant vagrant    18 Aug 29 00:21 which -> ../which/bin/which

2) Попытка сделать файл исполняемым:

chmod 777 ./which (adding sudo doesn't make this work either)

Выходы:

lrw-rw-rw- 1 vagrant vagrant    18 Aug 29 00:21 which -> ../which/bin/which

СТАРЫЙ ОТВЕТ - НЕ РАБОТАЛ: Решение, которое я сейчас использую, взято отсюда: Источник

Добавление этого в Vagrantfile позволяет символическим ссылкам работать должным образом.
Я использую Ubuntu на своих хостах и ​​гостевых машинах, поэтому не могу быть уверен, что это сработает для Mac и Windows.

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

Дополнительная литература:

https://github.com/hashicorp/vagrant/issues/713

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...