微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在VM中运行的node.js脚本不会看到从主操作系统进行的文件夹更改

我有以下设置:

> Ubuntu Lucid 32 VM由Vagrant创建.
> Vagrant从其中启动一些CSS和JS文件文件夹.该文件夹安装在VM内的地址/ vagrant /.
> grunt.js,从VM开始观察任务,观察css和js文件的变化.文件更改后,必须将此文件连接到一个css和一个js文件.

问题:在grunt.js中观察任务在挂载文件夹中没有看到更改.

如果我更改VM内的文件,看任务正常工作.
如果我启动grunt.js不是从虚拟框,而是从主os也可以.在Mac OS和Windows 7中尝试过.

问题只发生在从VM开始的任务,文件从主OS更改.这个问题有解决方法吗?

更新.有关我们的使用场景的一些细节,以更好地了解上下文:

>我们是desing工作室,10个peaple工作的代码.
>不同的人使用不同的操作系统.我们有:Win 7,Mc OS X和Ubuntu Linux.
>我们正在和支持100个不同的项目.
> Prjects使用不同的语言和设置:我们在自己的CMS上有PHP项目,Yii上的PHP项目,Django上的Python项目以及一些node.js项目.
>不同的开发人员可能在某个时间点对这些项目进行任何工作.
>现在,我们每次需要在开发人员的计算机上进行项目工作时花费大量的时间,以前没有使用它.通常我们需要开发人员的一些帮助,开发人员已经开始工作了.

我们想让它更直截了当.为此,我们尝试使用Vagrant和一些预先配置的OS映像.

现在,项目设置如下所示:

> git开发人员结帐项目
>开发人员在Terminal中打开项目文件夹.
>开发者进入“流氓”.
> 5分钟后,他完全配置和工作项目副本.

我们喜欢这个设置,大多数时候我们没有任何问题.但是在我们的node.js项目中,我们使用一些css和js预处理器,并且喜欢实时更新他们的文件.最初的帖子有问题.

使用ssh VM访问文件和VM内的项目文件解决方案可能会工作,但是它们并没有解决基本问题(快速,轻松地设置跨越不同OS的开发人员的大量项目)

解决方法

文件/路径观察者取决于操作系统的较低级别的设施,如Linux上的inotify或BSD系统的kqueue.这些机制直接与文件系统驱动程序配合使用,并且它们不会看到网络安装的变化.如果您的脚本将在虚拟操作系统上运行,那么您可能会改变共享方向.而不是从客户操作系统内的主机操作系统上访问共享文件夹,请使用客户操作系统上的真实文件夹(真正的操作发生),并从主机操作系统进行编辑,以编辑文件.这样你的客户操作系统就像在生产环境中一样工作,这就是Vagrant承诺的;但显然没有交付.

我个人使用Sublime Text 2编辑器与SFTP插件.在这个设置中,我保存两个文件副本,并在主机操作系统上进行工作.无论何时编辑/添加文件,我的编辑器都可以快速将其上传到服务器,即客户机操作系统.当我移动到生产服务器时,我仍然可以使用与使用共享文件夹相同的方法.

在转换为Sublime作为主编辑之前,我一直在使用Vim十多年.当时,我使用的WinSCP作为SFTP客户端,而不是使用总是bug的Vim的sftp / ssh设施,而不是使用.配置好后,只要双击服务器上的文件,就可以在选择的编辑器上打开文件,每当保存文件时,WinSCP会自动将其上传到服务器.这与Sublime的SFTP插件非常接近;然而,本地(主机OS)版本的文件是在WinSCP即时创建的临时文件夹上创建的.

Sublime的SFTP插件具有这两个系统上的文件夹重复的方法,更适合我的需求,因为我还在主机操作系统上作为我的备份解决方案运行SpiderOak.我喜欢它,因为它保留文件的版本历史.我设置了一个小时检查变化,而不是不断的观察,使系统发生故障时,可以使一个小时的工作失去正常的风险.一切都在这个设置中完美地工作,我真的使用了旧版本的功能多次,这让我从很多苦工和工作中丧失了生命.

因此,总而言之,如果要继续处理共享文件夹,您将要做的是在客户机操作系统(Ubuntu)上安装和配置Samba / NFS / FTP服务器并共享文件夹.然后,您将访问主机操作系统(Mac / Win7)的网络共享与访问任何其他共享远程文件夹的方式相同.如果您的使用和需求与我的相似,那么我强烈建议您使用升级版SFTP或YourEditor和WinSCP或类似的SFTP客户端.

更新:基于特别的症状,总结为“如果我在VM中更改文件,观察任务正常工作.如果我启动grunt.js不是从虚拟框,而是从主os也可以.在这个问题上,我对grunt.js如何观看文件文件夹做了一个错误的假设.我以为是使用节点的fs *观看功能;但是正如pyfunc所做的研究表明,我的假设是错误的.虽然这并不影响我提出的任何建议的结果,但是我必须道歉是一个错误的技术信息.所以,看起来这个问题是由于在远程机器上进行修改文件未正确设置的修改时间,这可能会导致vBoxfs对于依赖于文件修改间的这种用途无用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐