gpt4 book ai didi

javascript - 在服务器端运行 gulp.watch 会导致更改的文件在结果中丢失

转载 作者:行者123 更新时间:2023-11-28 00:09:30 25 4
gpt4 key购买 nike

我使用 Gulp (3.8.11) 来渲染 SASS 和 JavaScript。它在 Ubuntu 14.04.2 LTS 上与 Apache2、PHP 和 MySQL 一起在服务器端运行。

每次我更改文件(使用 Sublime Text 2 通过 SSHFS 远程更改)时,gulp.watch 都会启动指定的任务。然而,在结果中,更改的文件有 50% 的可能性丢失(对于 SASS 和 JS 任务)。

当我手动运行 gulp (不使用 gulp.watch)时,我得到了预期的结果。在本地运行同一项目的 gulp.watch,一切正常。

没有错误消息,只有一个不完整的渲染 JS 或 CSS 文件,在浏览器中看起来很棒。真令人沮丧。

编辑:对监视任务进行以下更改解决了问题。

var path = {
js: [
'src/js/*.js',
'src/js/*/*.js',
'src/js/*/*/*.js'
],
sass: [
'src/sass/reset.scss',
'src/sass/constant.scss',
'src/sass/base.scss',
'src/sass/*.scss'
]
};

gulp.task('watch', function() {
livereload.listen();

gulp.watch(path.js, function() {
setTimeout(function () {
gulp.start('js');
}, 100);
});

gulp.watch(path.sass, function() {
setTimeout(function () {
gulp.start('sass');
}, 100);
});
});

最佳答案

SSHFS的写入延迟可能。

因此,您可能希望将代码执行包装在超时中以解决此问题

编辑:正如空指针异常所评论的那样,我澄清了我的答案:

通过 SSHFS,文件实际内容存在写入延迟。因此,监视可能会在内容实际写入服务器上的文件之前被触发。因此,更改可能不会包含在任务的运行中。

要解决此延迟,gulp 任务中的超时可以增加在内容写入文件后执行任务的机会。

更多详细信息请点击 https://github.com/floatdrop/gulp-watch/issues/22

关于javascript - 在服务器端运行 gulp.watch 会导致更改的文件在结果中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31027167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com