Ошибка типа: dest.on не является функцией в gulp - PullRequest
0 голосов
/ 25 января 2019

Когда я редактирую файлы .yml темы в моей исходной папке тем, я получаю эту ошибку. Этого не происходит, когда я редактирую файлы scss или template .yml из папки с шаблонами, только в основной папке. Другие, у которых была эта ошибка, используют такие вещи, как webpack, чего у меня нет. Задача gulp для copy_theme_files такая же, как и для других задач, с той разницей, что она не имеет возврата, потому что я не знал, как вернуться туда с двумя функциями gulp.src.

gulp.task('copy_theme_files', function() {
    console.log('[copy_theme_files] Console Log: copy '+paths.themeSrc+' to '+paths.themeDest);
    gulp.src(paths.themeSrc)
        .pipe(gulp.dest(paths.themeDest));
    gulp.src(paths.root + '/*.{png,ico,svg}')
        .pipe(paths.themeDest);
});

Полный gulpfile.js https://pastebin.com/NWt2uMwV

Ошибка вывода:

[00:37:58] Using gulpfile /var/www/themes.src/mytheme.src/gulpfile.js
[00:37:58] Starting 'watch'...
[00:38:20] Starting 'copy_theme_files'...
[copy_theme_files] Console Log: copy *.{yml,theme,php,png,jpg,gif,svg,ico},.gitkeep to build
[00:38:20] 'copy_theme_files' errored after 23 ms
[00:38:20] TypeError: dest.on is not a function
    at DestroyableTransform.Readable.pipe (/var/www/themes.src/mytheme.src/node_modules/readable-stream/lib/_stream_readable.js:564:8)
    at /var/www/themes.src/mytheme.src/gulpfile.js:122:10
    at taskWrapper (/var/www/themes.src/mytheme.src/node_modules/undertaker/lib/set-task.js:13:15)
    at bound (domain.js:395:14)
    at runBound (domain.js:408:12)
    at asyncRunner (/var/www/themes.src/mytheme.src/node_modules/async-done/index.js:55:18)
    at process._tickCallback (internal/process/next_tick.js:61:11)
[00:38:20] Starting 'copy_includes'...
[copy_includes] Console Log: copy includes/**/*.*,includes/**/.gitkeep to build/includes
[00:38:20] Finished 'copy_includes' after 7.41 ms
[00:38:20] Starting 'copy_build'...
[copy_build] Console Log: copy build/**/*.*,build/**/.gitkeep to ../../web/themes/local/mytheme
[00:38:20] Finished 'copy_build' after 60 ms

Другие задачи выполняются нормально

[00:41:06] Starting 'copy_templates'...
[copy_templates] Console Log: copy templates/**/*.twig,templates/**/.gitkeep to build/templates
[00:41:08] Finished 'copy_templates' after 1.86 s
[00:41:08] Starting 'copy_build'...
[copy_build] Console Log: copy build/**/*.*,build/**/.gitkeep to ../../web/themes/local/mytheme
[00:41:09] Finished 'copy_build' after 326 ms

1 Ответ

0 голосов
/ 25 января 2019

В вашей задаче есть эта строка:

.pipe(paths.themeDest);

Вы, вероятно, имеете в виду:

.pipe(gulp.dest(paths.themeDest));

По другому вопросу посмотрите объединение двух потоков gulp.src , чтобы узнать, как вернуть:

var merge = require('merge-stream');

gulp.task('copy_theme_files', function() {
    console.log('[copy_theme_files] Console Log: copy '+paths.themeSrc+' to '+paths.themeDest);

    const themesStream = gulp.src(paths.themeSrc)
        .pipe(gulp.dest(paths.themeDest));

    const imagesStream = gulp.src(paths.root + '/*.{png,ico,svg}')
        .pipe(paths.themeDest);

    return merge(themesStream , imagesStream );
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...