Gulp 4 - Watch выдает ошибку типа «Недопустимая попытка распространения не повторяемого экземпляра». - PullRequest
1 голос
/ 28 мая 2020

У меня странная ошибка при использовании gulp 4, и я просто не могу понять, в чем проблема, на мой взгляд, это не имеет абсолютно никакого смысла. Я использую Gulp 4 и Babel, поэтому это gulpfile.babel. js.

Отрывок с проблемными c частями:

const root = 'src/';
const paths = {
    dist: './dist/',
    scripts: [
        `${root}/app/**/*.js`,
        `!${root}/app/**/*.js`
    ],
    tests: `${root}/app/**/*.spec.js`,
    styles: {
        src: `${root}/sass/**/*.scss`,
        dest: './dist/css/'
    },
    templates: `${root}/app/**/*.html`
};

function watchScripts() {
    gulp.watch([
        paths.templates,
        ...paths.scripts
    ], scripts);
}

const watchFiles = gulp.series(scripts, gulp.parallel(watchStyles, watchScripts));

function scripts() {
  return gulp.src([
      `!${root}/app/**/*.spec.js`,
      `${root}/app/**/*.module.js`,
      './templates.js',
      ...paths.scripts
    ])
    .pipe(sourcemaps.init())
    .pipe(wrap('(function(angular){\n\'use strict\';\n<%= contents %>})(window.angular);'))
    .pipe(concat('bundle.js'))
    .pipe(ngAnnotate())
    .pipe(gulpif(argv.deploy, uglify()))
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest(paths.dist + 'js/'));
}

export {
    clean,
    copy,
    scripts,
    templates,
    watchFiles
}

Проблема теперь в внутри задачи "watchFiles", в частности watchScripts-Part. Я без проблем могу запустить задачу «скрипты». Я могу запустить задачу watchFiles без каких-либо проблем и изменить что-то в html, которое запускает «скрипты» задачи. НО: Если я инициирую изменения, редактируя файлы JavaScript (paths.scripts), возникает следующая ошибка:

> watchScripts: Starting 'scripts'...
> watchScripts: 'scripts' errored after 448 μs
> watchScripts: TypeError: Invalid attempt to spread non-iterable instance.
> watchScripts: In order to be iterable, non-array objects must have a [Symbol.iterator]() method.
> watchScripts: at _nonIterableSpread (c:\Users\Kleiber\projects\trakyourtv\gulpfile.babel.js:50:39)
> watchScripts: at _toConsumableArray (c:\Users\Kleiber\projects\trakyourtv\gulpfile.babel.js:48:131)
> watchScripts: at scripts (c:\Users\Kleiber\projects\trakyourtv\/gulpfile.babel.js:104:10)
> watchScripts: at bound (domain.js:419:14)
> watchScripts: at runBound (domain.js:432:12)
> watchScripts: at asyncRunner (c:\Users\Kleiber\projects\trakyourtv\node_modules\async-done\index.js:55:18)
> watchScripts: at processTicksAndRejections (internal/process/task_queues.js:75:11)

Это абсолютно не имеет для меня смысла. Задача сценариев отлично работает сама по себе или запускается изменениями в html, как упоминалось выше. Почему изменения в файлах JS приводят к этой ошибке?

...