You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gulp中cleanRoot任务执行完成后进程未自动退出问题求助

你的任务代码本身逻辑是正常的,控制台输出也确认cleanRoot任务已经执行完毕,进程卡住只是因为Node.js事件循环中仍有活跃的句柄(比如未释放的模块引用、文件句柄、定时器等),没有被Gulp自动回收,针对这个场景的解决方案如下:

  • 方案1:修改gulp启动命令,添加--exit参数
    直接修改package.json中的clean脚本,任务执行完成后会强制终止进程,无需修改业务代码:
    {
      "scripts": {
        "clean": "gulp cleanRoot --exit"
      }
    }
    
  • 方案2:任务逻辑中主动退出进程
    如果你不想修改启动命令,可以调整cleanRoot任务的逻辑,文件删除完成后主动触发进程退出:
    import del from 'del';
    import { projectFolder } from '../config';
    
    const cleanRoot = async () => {
      await del(projectFolder);
      process.exit(0);
    };
    
    export default cleanRoot;
    
  • 方案3:排查残留句柄来源
    如果以上方案你不想用,想定位根本原因:
    1. 先排查../config配置文件,是否有初始化定时器、网络连接、文件监听这类不会自动释放的逻辑
    2. 检查del版本,如果使用的是v7及以上纯ESM版本,可尝试降级到del@6兼容版本,避免模块加载导致的句柄残留
    3. 你当前引入的@babel/register也可能持有文件引用未释放,可以尝试升级或降级babel相关依赖版本验证

内容的提问来源于stack exchange,提问作者SineYlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:36:01