【问题标题】:Gulp Watching Creates Infinite Loop Without Changing FilesGulp Watching 创建无限循环而不更改文件
【发布时间】:2016-09-25 06:04:05
【问题描述】:

与其他问题类似,在这个非常淡化的 sn-p 中,运行 default gulp 任务(通过运行 gulpnpm start);这个 sn-p 创建了一个无限循环,一遍又一遍地运行脚本任务。这是 gulpfile.js (字面意思是目前的全部内容):

'use strict';

const gulp = require('gulp');

// COPY SCRIPTS TO BUILD FOLDER
gulp.task('scripts', function() {
    return gulp.src('./scripts/**/*.js')
    .pipe(gulp.dest('build/scripts'))
});

// WATCH FILES
gulp.task('watch', function() {
    gulp.watch('./scripts/**/*.js', ['scripts']);
});

// DEFAULT
gulp.task('default', ['watch']);

特别奇怪的是,无论build文件夹是否新建,调用npm start后都会立即执行脚本任务!然后循环开始。

如果您好奇,这里是我的 package.json 中粘贴的(也是唯一的)脚本对象:

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "gulp"
  },

我的目录中唯一的其他东西是一个 scripts 文件夹,其中包含一个 app.js 和一个 home.js 文件。显然,一旦运行此任务,就会创建 build 文件夹(如果还没有的话)并将上述两个文件复制到其中。

你可以看到我只是在根目录的第一级文件夹中寻找脚本,称为脚本,所以我不应该通过引用同一组脚本上的更改来进行无限循环。此外,即使我是明确的,并且指向具有相对路径(例如 ./scripts/home.js)的特定文件,这仍然会发生。

我预计会感到尴尬,但我完全糊涂了。

【问题讨论】:

    标签: node.js gulp watch


    【解决方案1】:

    我发现的一些可能会导致错误的事情。

    编辑 - 试试看插件npm install --save-dev gulp-watch

    // Try and declare your plugins like this for now.
    var gulp  = require('gulp'),
        watch = require('gulp-watch');
    
    // Provide a callback, cb
    gulp.task('scripts', function(cb) {
      // Dont use ./ on your src as watch can have a problem with this
      return gulp.src('scripts/**/*.js')
        .pipe(gulp.dest('./build/scripts'), cb); // call cb and dont forget ;
    });
    
    // remove ./ on watch
    gulp.task('watch', function() {
      gulp.watch('scripts/**/*.js', ['scripts']);
    });
    
    gulp.task('default', ['watch']);
    

    所以这是很奇怪的行为,但这应该可以解决问题。 我唯一一次在 gulp 中使用 ./ 是在我的目的地。

    还要记住 gulpfile 只是一个 JS,所以记住你的分号等。

    【讨论】:

    • gulp-watch plugin 和内置的gulp.watch() 是完全不同的东西。由于他使用的是内置的,所以不需要require('gulp-watch')
    • 我同意@SvenSchoenung 并且不需要添加另一个依赖项并回调。相对路径在其他节点堆栈中一直对我有用。似乎只是一些环境问题。
    【解决方案2】:

    我不能保证这里的解决方案,但是当解决这个问题时,我有两个变量发生了变化:

    • 我将 Parallels VM 应用程序(在 Apple PowerBook 上)从 版本 10 -> 11。
    • 我使用当前版本的另一个许可证重新安装了 Windows 10 (之前的版本是获得许可的开发版本或早期版本)。

    我的代码、Node 版本、devDependencies 和版本都是相同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多