2016-03-18 5 views
0

Я использую BrowserSync с Gulp для повторной загрузки сайта на локальном компьютере при изменении определенных типов файлов. Я следующий фрагмент кода в моей gulpfile:BrowserSync + Gulp with Vagrant не обновляется

gulp.task('browser-sync', function() { 
    browsersync.init({ 
     proxy: "mySite:8080", 
     files: ["./*.html", "dev/*.css"] 
    }); 
}); 

При изменении (и сохранения) любой из перечисленных выше типов файлов, я получаю выход, как это в моем терминале:

[BS] Serving files from: ./ 
[BS] Watching files... 
[BS] File changed: index.html 
[BS] File changed: dev\styles.css 

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


UPDATE

Я забыл упомянуть, что мой хозяин машина работает для Windows 10 и мой гость машина работает под управлением Ubuntu 14.04.4 LTS. Поставщик виртуальной машины - VirtualBox.

Первоначально, я использовал метод config.vm.synced_folder по умолчанию. Я это на мой vagrantfile:

config.vm.synced_folder "/Path/To/My/Host/Website/Folder/", "/usr/nginx/html/mywebsite/" 

Я с тех пор пытались использовать NFS, со следующей конфигурацией:

config.vm.synced_folder "/Path/To/My/Host/Website/Folder/", "/usr/nginx/html/mywebsite/", 
:type => :nfs, 
:mount_options => ['nolock,vers=3,udp,noatime,actimeo=1'] 

С моего хоста работает Windows, я установил плагин vagrant-winnfsd, который добавляет поддержку для NFS. Но теперь бродяга останавливается, когда пытается установить общую папку NFS.

Кроме того, так как я получаю следующее сообщение об ошибке на vagrant up: GuestAdditions versions on your host (5.0.16) and guest (4.3.36) do not match, я установил плагин vagrant-vbgues, чтобы сохранить VirtualBox Guest Additions в актуальном состоянии. Безрезультатно. Vagrant все еще зависает, когда пытается установить общую папку NFS.

+1

См. Мой обновленный ответ о 'rsync'. Плагин 'vagrant-vbguest' попал и пропустил для меня, но если вы ssh в машину, вы можете вручную установить гостевые дополнения, если считаете, что это проблема. С 'rsync' для синхронизированных папок у меня не было проблемы с версиями, несовместимыми между 4.2 и 5.x, для чего это стоит. –

+0

Спасибо, посмотрим! – pierrebonbon

+0

Связано: [nginx не обслуживает обновленные статические файлы] (http://stackoverflow.com/q/12864947/55075), [Странное поведение кеша/виртуального бокса/Apache2] (http://stackoverflow.com/q/9479117/ 55075) – kenorb

ответ

1

Бывает так, что проблема связана с VirtualBox, как объяснено here.Так как я бегу Nginx на виртуальной машине в VirtualBox, решение моей проблемы было закомментировать sendfile директиву nginx.conf, или просто установить его, как это:

sendfile off; 

В этом же номере сообщается here , и here. Как и в Vagrant docs, в котором говорится, что «существует ошибка VirtualBox, связанная с sendfile, которая может привести к повреждению или не обновлению файлов».

+0

Ах, замечательно, рад, что ты это решил! Вы должны отметить это как принятый ответ. –

1

Название и теги говорят, что вы используете Vagrant, хотя это не упоминается в вашем вопросе.

Убедитесь, что ваши изменения синхронизируются с виртуальной машиной. Посмотрите на vagrant documentation, чтобы выбрать тип синхронизированных папок, которые будут работать в вашей ситуации. Их основной пример выглядит следующим образом:

Vagrant.configure("2") do |config| 
    # other config here 

    config.vm.synced_folder "src/", "/srv/website" 
end 

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

UPDATE

на основе новой информации и комментариев, я бы рекомендовал использовать rsync в качестве общего метода папки.

config.vm.synced_folder "Host/Path/", "/Guest/Path", type: "rsync", 
    rsync__exclude: [ '.git', 'logs'], 
    rsync__args: ["--verbose"], 
    rsync__chown: false 

Я никогда не нашел способ сделать NFS хорошо играть (и хорошо работать), если Windows, находится в соединении.

+0

Первоначально я использовал аналогичную конфигурацию, но теперь я изучаю NFS. Попробуй свое предложение проверить файлы вручную, хотя я этого не делал раньше. Спасибо за подсказку! – pierrebonbon

+0

Я вернулся к первоначальной конфигурации и проверял файлы согласно вашему предложению с помощью 'vagrant ssh'. Самое странное: index.html, например, отражает изменения, которые я делаю в своем редакторе. Может быть, браузер-синхронизация просматривает правильный файл, но обновляет какой-то другой файл? – pierrebonbon

+0

Быстрая заметка о rsync: он не будет работать в Vagrant 1.8.0 (из-за ошибки, которая еще не исправлена ​​в 1.8.1). Однако для этого есть обходной путь. Сообщается [здесь] (https://github.com/mitchellh/vagrant/issues/6702). – pierrebonbon

Смежные вопросы