Я не могу понять, почему я получаюСигнал ошибки завершения асинхронного хотя я вернулся поток
Did you forget to signal async completion?
Вот мои настройки:
gulp.task('compile-ts',() => {
return tsProject.src(config.files.src.ts)
.pipe($.tap((file, t) => {
logVerbose('Compiling "' + file.path + "'");
}))
.pipe($.sourcemaps.init())
.pipe($.typescript(tsProject))
.pipe($.sourcemaps.write('./'))
.pipe($.chmod(755))
.pipe(gulp.dest(config.dist));
});
gulp.task('copy-assets',() => {
return gulp.src(config.files.src.css_html_js, { base: config.src })
.pipe($.tap((file, t) => {
logVerbose('Copying "' + getFileName(file.path) + "'");
}))
.pipe($.chmod(755))
.pipe(gulp.dest(config.dist));
});
gulp.task('browser-sync', (done) => {
browserSync.init({
"port": 3000,
"startPath": "dist/index.html",
"browser": "chrome",
"logLevel": "silent",
"server": {
"middleware": {
"0": null
}
}
}, done);
process.on('exit',() => {
browserSync.exit();
});
})
gulp.task('watch', gulp.parallel(() => {
gulp.watch(config.files.ts, gulp.series('compile-ts'));
},() => {
gulp.watch(config.files.css_html_js, gulp.series('copy-assets'));
}));
gulp.task('serve-dist', gulp.parallel('watch', 'browser-sync'));
Согласно StackTrace, мешающая линия
gulp.watch(config.files.ts, gulp.series('compile-ts'));
внутри задачи watch
. Задача compile-ts
работает и возвращает поток, который должен быть достаточным для завершения сигнала. Но почему я все равно получаю ошибку?
Это [email protected]
.
EDIT:
Изменение watch
задание
gulp.task('watch', (done) => {
gulp.watch(config.files.css_html_js, gulp.series('copy-assets'));
gulp.watch(config.files.ts, gulp.series('compile-ts'));
done();
});
Я не получаю ошибки больше, но задача не закончена в течение 4 мс и делает ничего. Если я удалю часть done
, я снова получу ту же ошибку.
EDIT2: Я разделить задачи на несколько, чтобы быть в состоянии точно определить проблему,
gulp.task('watch-ts',() => {
return gulp.watch(config.files.ts, gulp.series('compile-ts'));
});
gulp.task('watch-assets',() => {
return gulp.watch(config.files.css_html_js, gulp.series('copy-assets'));
});
gulp.task('watch', gulp.parallel('watch-ts', 'watch-assets'));
Теперь watch-ts
и watch-assets
оба дают мне это сообщение об ошибке. Любой из них возвращает поток, насколько я могу судить.
Возможного дубликат [ошибки Глотка: Следующие задачи не завершены: Вы забыли сигнализировать о завершении асинхронного?] (HTTP : //stackoverflow.com/questions/36897877/gulp-error-the-following-tasks-did-not-complete-did-you-forget-to-signal-async) –
Также не 'tsProject.src() 'вернуть поток? ['gulp.watch()'] (https://github.com/gulpjs/gulp/blob/4.0/docs/API.md#gulpwatchglobs-opts-fn) ожидает строку или массив строк. –
Исправлено. Не меняет результат, хотя и проверил предложенный ответ, прежде чем публиковать мой вопрос, поскольку, по-моему, я возвращаю поток (= ваш ответный пункт 1.) –