Gulp-eslint генерирует ошибки на динамически загружаемых JS - PullRequest
0 голосов
/ 11 марта 2019

У меня есть структура проекта, подобная

Folder Structure

В com имеется около 10 файлов JS. lab1 и lab2 имеет файл config.json, который сообщает из 10 файлов, какие файлы должны быть объединены и помещены как app-min.js в dist/lab1 или dist/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 на некоторых файлах, которые не затрагиваются. Это происходит не всегда, а если часы работают в течение 10-20 минут, они выдают ошибку. Как это:

Error Image

В этом случае CheckBoxCompClass.js - это не файл, который был изменен, но все же возникла проблема. Кроме того, точка с запятой на месте. Если этот файл имеет проблему, то eslint должен был выдать ошибку в первую очередь.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 30 апреля 2019

Случайно, мой NVM был установлен на более старую версию.Решил проблему после обновления NVM и установки текущей версии NVM на последнюю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...