Gulp-eslint 在动态加载的 JS 上抛出错误

Gulp-eslint throws errors on dynamically loaded JSs

我的项目结构类似于

com 中有大约 10 个 JS 文件。 lab1lab2 有一个 config.json 文件,它告诉在 10 个文件中哪些文件要连接并放置为 app-min.jsdist/lab1dist/lab2.

在 gulp 文件中,我创建了类似这样的内容。

var filesArr = [];
var labName;

// Player Task
gulp.task('player', function () {
  return gulp.src(filesArr)
    .pipe(eslint())
    .pipe(babel())
    .pipe(concat('app-min.js'))
    .pipe(uglify({
      compress: {
        drop_console: true
      }
    }).on('error', gutil.log))
    .pipe(gulp.dest('dist/' + labName));
});

// Clean
gulp.task('clean', function () {
  if (readJson()) {
    return del([
      'dist/' + labName
    ]);
  }
  return null;
});

// Watch
gulp.task('watch', function () {
  gulp.watch(filesArr, gulp.series('player'));
});

// Read Json and create JS Array
function readJson() {
  // LAB STRUCTURE
  var _n = prompt('Specify the LAB name. ');
  labName = _n;
  var _path = path.resolve('./src/' + _n);
  var _exists = fs.existsSync(_path);
  if (_exists) {
    var _json = fs.readFileSync(path.resolve(_path + '/labstructure.json'), 'utf-8');
    var _jObj = JSON.parse(_json).labObj.components;
    for (var i = 0; i < _jObj.length; i++) {
      var _jsName = 'src/com/component/' + _jObj[i].ref + '.js';
      if (filesArr.indexOf(_jsName) === -1) {
        filesArr.push(_jsName);
      }
    }
  }
  return _exists;
}

gulp.task('default', gulp.series('clean', 'player', 'watch'));

这里的 filesArr 看起来像:

[ 'src/com/component/ColorActClass.js',
  'src/com/component/PanelCompClass.js',
  'src/com/component/ToggleCompClass.js',
  'src/com/component/SliderCompClass.js',
  'src/com/component/CheckBoxCompClass.js',
  'src/com/component/ButtonCompClass.js',
  'src/com/component/LabelCompClass.js',
  'src/com/component/InputBoxClass.js',
  'src/com/component/ColorMonitorClass.js',
  'src/com/component/MsgBoxClass.js',
  'src/com/component/ConfBoxClass.js',
  'src/com/component/NumberPadClass.js',
  'src/com/main/lib/webfontloader.js',
  'src/com/main/lib/howler.core.min.js',
  'src/com/main/PlayerClass.js',
  'src/kl1001_color/BrainClass.js' ]

这在一开始就完美无缺。但是,当修改任何 JS 时,watch player 任务会在某些未触及的文件上抛出 eslint 错误。这并不总是发生,而是如果 watch 是 运行 10-20 分钟,然后它会抛出错误。像这样:

在这种情况下 CheckBoxCompClass.js 不是被修改的文件,但仍然有问题。最重要的是,分号就位。如果此文件有问题,那么 eslint 应该首先抛出错误。

请帮忙。

一不小心,我的 NVM 被设置为旧版本。更新 NVM 并将当前 NVM 版本设置为最新版本后解决了该问题。