Gulp 4 watcher正在运行,但未检测到更改

Gulp 4 watcher正在运行,但未检测到更改,gulp,watch,Gulp,Watch,我的文件结构如下: / src -- app.less / gulp -- index.js -- gulpfile.js 此文件结构安装在/vagrant中的vagrant框中,这意味着到app.less的路径变为/vagrant/src/app.less。是的,我查过了 gulpfile.js index.js 吞咽-v返回: 吞咽手表返回: 我已经使用Gulp4超过2个月了,与watcher没有任何问题。从上周开始,观察者没有对正在更改的文件做出响应。我试过几个编辑器,我试过多个

我的文件结构如下:

/ src
  -- app.less
/ gulp
  -- index.js
-- gulpfile.js
此文件结构安装在/vagrant中的vagrant框中,这意味着到app.less的路径变为/vagrant/src/app.less。是的,我查过了

gulpfile.js

index.js

吞咽-v返回:

吞咽手表返回:

我已经使用Gulp4超过2个月了,与watcher没有任何问题。从上周开始,观察者没有对正在更改的文件做出响应。我试过几个编辑器,我试过多个路径,比如“/vagrant/***.less”和“../src/*.less”,甚至是app.less的绝对路径“/vagrant/src/app.less”,它们都不起作用


经过一些研究,我在Gulp4的github回购协议中发现了几个关于观察者的问题。然而,我不知道问题出在哪里。也许我忽略了代码中的一个错误或文档中的一些新内容,但我从昨天早上就开始尝试解决这个问题,没有任何运气

看来你用的是流浪汉。如果您的Gulp在您的Vagrant机器上而不是在主机上运行,它将不会检测到您在主机上对文件所做的任何更改。这是因为通知操作系统文件系统更改的事件不会传播到VM中

如果是这种情况,解决方案是在您实际更改文件的任何位置运行Gulp(即,如果您在VM上进行更改,则在VM上运行它;如果您在主机上进行更改,则在主机上运行Gulp)


也可以使路径相对,而不是将您的实现绑定到您的“流浪者”框。i、 e.
less:'./src/app.less'

这证实了我看错了方向。这不是吞咽,而是在我的虚拟机中装载文件的方式。在我的虚拟机外运行gulp watch工作正常。我要进一步调查这件事,现在我知道我该去哪里找了。谢谢还有其他解决办法吗?我问这个问题是因为我使用Vagrant是因为我需要在Linux上执行管道(由于本机代码),而我的编辑器是在OSX上运行的。可能已经有一些库或者至少有一些教程介绍了如何实现这一点,但是基本要点是,给一些东西一个路径,并执行一个回调,它采用该路径,并运行一个无休止的循环来检查更改(不知何故),然后在每次检测到更改时运行回调。
require('./gulp');
var paths = {
    less: '/vagrant/src/app.less'
};

gulp.task('less', function () {
    console.log('less function running');

    return gulp.src(paths.less)
        .pipe(less());
});

gulp.task('watch:styles', function () {
    console.log('watch function running');

    gulp.watch(paths.less, gulp.series('less'));
});

gulp.task('watch', gulp.parallel('watch:styles'));
[10:02:05] CLI version 0.4.0
[10:02:05] Local version 4.0.0-alpha.1
[09:45:20] Using gulpfile /vagrant/gulpfile.js
[09:45:20] Starting 'watch'...
[09:45:20] Starting 'watch:styles'...
watch function running