gpt4 book ai didi

terminal - gulp 4 : how to detect the "Did you forget to signal async completion?" error in a complex build script

转载 作者:行者123 更新时间:2023-12-04 21:05:18 29 4
gpt4 key购买 nike

迁移到 Gulp 4 的人可能知道,gulp.series – 正如它应该的 – 如果系列中的任务没有正确发出完成信号,则不会继续执行。

我的问题是它处理这种错误的方式 - 它只是控制台中的一条消息(您是否忘记发出异步完成信号?); gulp 仍然以错误代码 0 退出。这意味着如果您在更复杂的构建脚本中运行 gulp,对于该脚本,它看起来好像一切正​​常,并且 gulp 任务在显然没有成功的情况下成功完成。 (相反,如果您使用 gulpUtil.plugin error 抛出错误,则会导致非 0 错误代码。)

所以我的问题是:您如何“从外部”检测到发生了此类错误?

  • 在这种情况下,有没有办法让 gulp 以非 0 退出? (是否有我可以订阅并抛出错误的事件,或者我可以设置的配置等)
  • 我应该尝试检查应该生成的 Assets 是否存在? (我发现这个解决方案非常脆弱。)
  • 我是否应该“观察”控制台消息并寻找特定的字符串,例如“您是否忘记发出信号...”? (呃!)
  • (是的,我知道我可以用 gulp 做所有事情,然后我不需要检查错误代码,但让我们假设,实际上,我不能。)

  • 还有其他我没有想到的可能性吗?

    最佳答案

    您可以使用流/ promise /回调来向进程发出信号。握手完成后,您可以继续该过程。

    var print = require('gulp-print');

    gulp.task('message', function() {
    return gulp.src('package.json')
    .pipe(print(function() { return 'HTTP Server Started'; }));
    });

    gulp.task('message', function() {
    return new Promise(function(resolve, reject) {
    console.log("HTTP Server Started");
    resolve();
    });
    });

    gulp.task('message', function(done) {
    console.log("HTTP Server Started");
    done();
    });

    否则以这种方式使用回调。
    function syncTasks(callback1)
    {
    return gulp.series(firstTask, secondTask, (callback2) =>
    {
    callback1();
    callback2();
    })();
    }

    关于terminal - gulp 4 : how to detect the "Did you forget to signal async completion?" error in a complex build script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47508876/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com