Gulp [ERR_ASSERTION]: таcк работает через раз

15
13 февраля 2018, 09:50

Gulp-таск

gulp.task('update production js', gulp.series(
    done => { isDevelopment = false; done (); },
    del.sync(outputJsSelection),
    'webpack'
));

работает через раз. В случае ошибки, показывает следующее:

assert.js:42
  throw new errors.AssertionError({
  ^
// Это не таск, NoJsRequest - это просто JavaScript - файл!
AssertionError [ERR_ASSERTION]: Task never defined: C:\OpenServer\domains\example.loc\public\open\js\NoJsRequest.js
    at getFunction (C:\OpenServer\domains\example.loc\node_modules\undertaker\lib\helpers\normalizeArgs.js:15:5)
    at map (C:\OpenServer\domains\example.loc\node_modules\arr-map\index.js:20:14)
    at normalizeArgs (C:\OpenServer\domains\example.loc\node_modules\undertaker\lib\helpers\normalizeArgs.js:22:10)
    at Gulp.series (C:\OpenServer\domains\example.loc\node_modules\undertaker\lib\series.js:13:14)
    at Object.<anonymous> (C:\OpenServer\domains\example.loc\gulpfile.js:143:40)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)

Перед тем, как я сделал таск update production js, webpack работал нормально (да и сейчас дело не в нём).

Дополнительная информация:

const   gulp = require('gulp'),
        webpack = require('webpack'),
        del = require('del');
let outputJsSelection = 
[ 'C:\\OpenServer\\domains\\example.loc\\public\\open\\js\\**\\*.*',
  'C:\\OpenServer\\domains\\example.loc\\public\\admin\\js\\**\\*.*' ];

Кстати, тоже самое и с таском 'update production styles':

gulp.task('update production styles', gulp.series(
    done => { isDevelopment = false; done (); },
    del.sync(HPath.outputCssSelection),
    'styles'
));
assert.js:42
  throw new errors.AssertionError({
  ^
// 01_Top.css - это же не таск!!
AssertionError [ERR_ASSERTION]: Task never defined: C:\OpenServer\domains\example.loc\public\open\css\01_Top.css

Результаты самостоятельной отладки

Да, действительно, если убрать таски styles или webpack, всё будет работать корректно каждый раз:

gulp.task('update production styles', gulp.series(
    done => { isDevelopment = false; done (); },
    del.sync(outputCssSelection),
    //'styles'
));

Но если вернуть таски styles и webpack, то даже строка done => { isDevelopment = false; done (); }, не будет выполнена. Отладочный вариант таска update production styles:

gulp.task('update production styles', gulp.series(
    done1 => { console.log('ok1'); done1(); },
    done => { isDevelopment = false; done (); },
    done2 => { console.log('ok2'); done2(); },
    del.sync(outputCssSelection),
    done3 => { console.log('ok3'); done3(); },
    'styles'
));

Случай с корректным выполнением таска (срабатывает, когда в выходной папке нет css или js-файлов):

λ gulp "update production styles"
[10:46:23] Using gulpfile C:\OpenServer\domains\example.loc\gulpfile.js
[10:46:23] Starting 'update production styles'...
[10:46:23] Starting '<anonymous>'...
ok1
[10:46:23] Finished '<anonymous>' after 1.69 ms
[10:46:23] Starting '<anonymous>'...
[10:46:23] Finished '<anonymous>' after 967 μs
[10:46:23] Starting '<anonymous>'...
ok2
[10:46:23] Finished '<anonymous>' after 1.55 ms
[10:46:23] Starting '<anonymous>'...
ok3
[10:46:23] Finished '<anonymous>' after 1.09 ms
[10:46:23] Starting 'styles'...
[10:46:27] Finished 'styles' after 3.31 s
[10:46:27] Finished 'update production styles' after 3.32 s

Случай некорректной работы таска (ни одного ok в консоли):

λ gulp "update production styles"
assert.js:42
  throw new errors.AssertionError({
  ^
AssertionError [ERR_ASSERTION]: Task never defined: C:\OpenServer\domains\example.loc\public\open\css\01_Top.css
Answer 1

Возможно проблема в вашем del, он по идее выдаёт ошибку когда удаляете папку а там есть файлы. Попробуйте использовать rimraf = require('rimraf')
Таск будет примерно таким

// Таск для предварительной очистки (удаления) production-папки (task for delete 
of production folder dist):
gulp.task('clean', function (cb) {
    rimraf(paths.dist.css.dest + '/*', cb);
    rimraf(paths.dist.img.dest + '/*', cb);
});
READ ALSO
google app script с регулярным выражением

google app script с регулярным выражением

Не получается заставить работать google app script с регулярным выражением \[[^\[]+\]

40
Восстановить стили

Восстановить стили

Есть функция которая добавляет новые стили на указанный класс при нажатии на кнопкуПеред тем как добавить стили скрипт сначало ищет совпадения...

29
Получить hash из div

Получить hash из div

Как получить hash из этого дива?(На JS)

41