Gulp 下列任务未完成,你忘了发送异步完成信号了吗?语法问题

yr9zkbsy  于 2023-06-04  发布在  Gulp
关注(0)|答案(1)|浏览(179)

有gulp文件
gulpfile.js

const gulp = require('gulp');
const {path} = require('./gulp/config/path.js');
const {plugins} = require('./gulp/config/plugins.js');
/*
import gulp from "gulp";
import {path} from "./gulp/config/path.js";
import {plugins} from "./gulp/config/plugins.js";
*/

global.app = {
    isBuild: process.argv.includes('--build'),
    isDev: !process.argv.includes('--build'),
    path: path,
    gulp: gulp,
    plugins: plugins
}

// Имрорт задач
const copy = require("./gulp/tasks/copy.js");
const reset = require("./gulp/tasks/reset.js");
const html = require("./gulp/tasks/html.js");
const server = require("./gulp/tasks/server.js");
const scss = require("./gulp/tasks/scss.js");
const js = require("./gulp/tasks/js.js");
const images = require("./gulp/tasks/images.js");
const {otfToTtf, ttfToWoff, fontsStyle} = require("./gulp/tasks/fonts.js");
const svgSprive = require("./gulp/tasks/svgSprive.js");
const zip = require("./gulp/tasks/zip.js");
const ftp = require("./gulp/tasks/ftp.js");

/*
import {copy} from "./gulp/tasks/copy.js";
import {reset} from "./gulp/tasks/reset.js";
import {html} from "./gulp/tasks/html.js";
import {server} from "./gulp/tasks/server.js";
import {scss} from "./gulp/tasks/scss.js";
import {js} from "./gulp/tasks/js.js";
import {images} from "./gulp/tasks/images.js";
import {otfToTtf, ttfToWoff, fontsStyle} from "./gulp/tasks/fonts.js";
import {svgSprive} from "./gulp/tasks/svgSprive.js";
import {zip} from "./gulp/tasks/zip.js";
import {ftp} from "./gulp/tasks/ftp.js";
*/

function watcher() {
    gulp.watch(path.watch.files, copy);
    gulp.watch(path.watch.html, html);
    gulp.watch(path.watch.scss, scss);
    gulp.watch(path.watch.js, js);
    gulp.watch(path.watch.images, images);
}

// export {svgSprive}

const fonts = gulp.series(otfToTtf, ttfToWoff, fontsStyle);

const mainTasks = gulp.series(fonts, gulp.parallel(copy, html, scss, js, images));

const dev = gulp.series(reset, mainTasks, gulp.parallel(watcher, server));
const build = gulp.series(reset, mainTasks, svgSprive);
const deployZIP = gulp.series(reset, mainTasks, zip);
const deployFTP = gulp.series(reset, mainTasks, ftp);

/*
export {dev}
export {build}
export {deployZIP}
export {deployFTP}
*/

module.exports = { svgSprive, dev, build, deployZIP, deployFTP};

gulp.task('default', dev);

reset.js

/*import {
    deleteAsync
} from "del"*/

const del = require('del');

const reset = () => {
    async () => {
        const deletedPaths = await del(app.path.clean);
     
        // console.log('Deleted files and directories:\n', deletedPaths.join('\n'));
    }   
    
    // deleteAsync(app.path.clean)
}

module.exports = reset;

运行gulp命令后,会弹出两条红色消息:下列任务未完成。你忘了发送异步完成信号了吗?.
https://i.stack.imgur.com/Er6SA.png
请告诉我如何修改这些留言。

在Google上搜索并找到The following tasks did not complete. Did you forget to signal async completion?但我使用的语法略有不同。我尝试使用gulp.task('default', dev);代替gulp.task('default', async dev);但它用红色下划线**async dev**。

我正在尝试运行gulp而没有错误,我正在等待帮助使用语法来解决问题。

3npbholx

3npbholx1#

阅读gulp任务异步完成:https://gulpjs.com/docs/en/getting-started/async-completion/
我的偏好是使用async,并以gulp的形式承诺所有内容-任务,流等。
乍一看,你的watcher没有报告任何异步完成:

function watcher() {
    gulp.watch(path.watch.files, copy);
    gulp.watch(path.watch.html, html);
    gulp.watch(path.watch.scss, scss);
    gulp.watch(path.watch.js, js);
    gulp.watch(path.watch.images, images);
}

你应该使用callback或者返回一个promise:

function watcher(done) {
    gulp.watch(path.watch.files, copy);
    gulp.watch(path.watch.html, html);
    gulp.watch(path.watch.scss, scss);
    gulp.watch(path.watch.js, js);
    gulp.watch(path.watch.images, images);
    done();
}

async function watcher() {
    gulp.watch(path.watch.files, copy);
    gulp.watch(path.watch.html, html);
    gulp.watch(path.watch.scss, scss);
    gulp.watch(path.watch.js, js);
    gulp.watch(path.watch.images, images);
}

function watcher() {
    gulp.watch(path.watch.files, copy);
    gulp.watch(path.watch.html, html);
    gulp.watch(path.watch.scss, scss);
    gulp.watch(path.watch.js, js);
    gulp.watch(path.watch.images, images);
    return Promise.resolve();
}

确保你的所有其他任务都遵循相同的逻辑。
关于reset()你在body中定义了一个async函数,它什么也不做,我猜你的reset()可能看起来像这样:

const reset = async () => {
    const deletedPaths = await del(app.path.clean);
    console.log('Deleted files and directories:\n', deletedPaths.join('\n'));
}

相关问题