HMR*_*HMR 5 linux virtualbox vagrant gruntjs karma-runner
这花了我很多年才找到,但似乎无法找到这个解决方案.使用vagrant我运行一个运行grunt/karma的Fedora 20来宾.我在主机上编辑的源代码但是当我保存grunt时没有检测到更改,因此没有进行任何测试.
认为这是一个配置问题所以在这里尝试了许多组合而没有成功.最后,我向访客打开了第二个ssh vagrang ssh并更改了另一个ssh终端中的文件echo " " >> app/js/app.js,看到现在grunt/karma检测到更改并再次运行测试.
因为它没有x窗口或任何我用PhantomJS运行测试.另一个问题是我必须EnableSendfile off在httpd.conf中设置以防止Apache在从共享中提供文本文件时发送垃圾(这是我的主机项目和客户机中的web根目录).我的猜测是,可能需要对节点执行另一个设置,以便它检测主机对共享上的文件所做的更改.它使用virtualBox共享.
有没有人经历过这个,有没有解决方案呢?似乎主机更改共享文件不会触发grunt/karma正在侦听的某些事件,表明文件已更改.
[更新]
试过NFS和rsync共享,但NFS根本不工作,rsync似乎只是在启动时同步.
[更新]
作为临时解决方案,我必须手动告诉文件在ssh终端中更新:
#start grunt and give me back command:
grunt &
#when I update a file tell grunt it's updated
touch -d "now" test/unit/loginSpec.js
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我更新app/js/login.js并告诉grunt test/unit/loginSpec.js更新它将再次运行测试但使用旧的login.js即使已更改cat app/js/login.js显示更改.如果不是这样,解决方案将焦点设置到右侧窗口和2次击键(向上箭头并输入)
这是由于 vboxsf(Virtualbox \xe2\x80\x9csharded 文件夹\xe2\x80\x9d 文件系统)同步中的一个已知错误导致的,该问题的解决方案只能由 Virtualbox 团队实现。人们在使用 Gulp、Guard 或 Meteor.js(仅举几例)时也遇到过类似的问题。
\n\n您可以使用一些解决方法\xe2\x80\xa6
\n\nVagrant 1.5 有一个自动同步实用程序(rsync-auto ),可以监视指定的文件夹,并在您实时进行更改时自动同步它们。它使用系统特定的 API 来检测文件更改,而不是轮询文件系统\xe2\x80\xa6
\n\n所以你应该在 vagrant 文件中定义你的共享。IE:
\n\nconfig.vm.synced_folder ".", "/vagrant", type: "rsync"\nRun Code Online (Sandbox Code Playgroud)\n\n
\n并打开一个额外的终端会话运行:
$ vagrant rsync-auto\nRun Code Online (Sandbox Code Playgroud)\n\n然而,仅此并不是最有效的选择。在这里你可以找到一个gruntfile和一个vagrant 插件,它们将帮助你使你的 rsync 运行得更快更流畅......
\n\n希望能帮助到你!
\n