当主机更改源时,grunt karma 对 vagrant 进行测试 grunt/karma 未检测到它
Posted
技术标签:
【中文标题】当主机更改源时,grunt karma 对 vagrant 进行测试 grunt/karma 未检测到它【英文标题】:grunt karma testing on vagrant when host changes sources grunt/karma doesn't detect it 【发布时间】:2014-07-07 10:04:30 【问题描述】:这花了我很长时间才找到,但似乎无法找到解决方案。使用 vagrant 我运行了一个运行 grunt/karma 的 Fedora 20 客户机。我在主机上编辑的源代码,但是当我保存 grunt 时没有检测到更改,因此没有进行任何测试。
认为这是一个配置问题,所以在这里尝试了许多组合但没有成功。最后我打开了第二个 ssh 给来宾 vagrang ssh
并更改了另一个 ssh 终端 echo " " >> app/js/app.js
中的文件,看到现在 grunt/karma 检测到更改并再次运行测试。
由于它没有 x 窗口或任何东西,我正在使用 PhantomJS 运行测试。另一个问题是我必须在 httpd.conf 中设置 EnableSendfile off
以防止 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
有趣的是,如果我更新 app/js/login.js
并告诉 grunt test/unit/loginSpec.js
已更新,它将再次运行测试,但使用旧 login.js 即使它已更改 cat app/js/login.js
也会显示更改。如果不是这样,解决方案将焦点设置到右侧窗口和 2 次击键(向上箭头并输入)
【问题讨论】:
听起来像是网络配置问题而不是编码问题……还是您正在编译自己的 grunt 分支? @BenVoigt 共享的实现方式肯定有问题。尽管如果主机更改文件,则可以在具有正确最后修改日期的客人上看到文件更改。只是 grunt watch (node) 没有检测到文件被更改。 您是否正在编写/修改实现共享的代码? @BenVoigt 来宾主持项目的 symfony 部分以及用于测试 angularjs 部分的 nodejs、grunt 和工具。主机用于编辑代码,因为它具有 IDE(netbeans)。共享是为了让我能够修改主机上的代码并让它立即在来宾上运行(标准 vagrant 设置)。 @BenVoigt 感谢您的回复。我不同意你的观点,因为 vagrant 是一个开发人员工具,共享的全部意义在于你可以在一台开发机器上为客户端/项目运行多个服务器配置:vagrantup.com 为此需要 Apache 和我怀疑 nodejs 有 grunt watch 工作。 Apache 部分已记录和提及,但找不到 grunt watch 部分,所以在这里询问。 【参考方案1】:这源于 vboxsf(Virtualbox“分片文件夹”文件系统)同步中的一个已知错误,该问题的解决方案只能由 Virtualbox 团队实施。人们在使用 Gulp、Guard 或 Meteor.js(仅举几例)时遇到过类似的问题。
您可以使用一些解决方法……
自动rsync
Vagrant 1.5 有一个自动同步实用程序 (rsync-auto) 可以监视指定的文件夹,并在您实时进行更改时自动同步更改。它使用系统特定的 API 来检测文件更改,而不是轮询文件系统……
所以你应该在 vagrant 文件中定义你的共享。即:
config.vm.synced_folder ".", "/vagrant", type: "rsync"
并打开一个额外的终端会话运行:
$ vagrant rsync-auto
但是,仅此一项并不是最有效的选项。在这里您可以找到 gruntfile 和 vagrant plugin,它们将帮助您使您的 rsync 运行得更快、更流畅...
希望对你有帮助!
【讨论】:
以上是关于当主机更改源时,grunt karma 对 vagrant 进行测试 grunt/karma 未检测到它的主要内容,如果未能解决你的问题,请参考以下文章
Karma start和grunt karma之间的区别:单位