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

Angular18升级后GitLab CI/CD中Node命令执行无限挂起问题

Angular 18.1.0 Lint/Prettier 在GitLab CI Docker环境无限挂起的解决思路

1. 切换到官方推荐的Node.js LTS版本

Angular 18官方指定Node.js 20.x LTS为兼容版本,你当前使用的21.4.0、22.0.0均为非LTS版本,大概率存在兼容性问题。直接替换为node:20-alpine或node:20-slim镜像,这是最快速的排查方向。

2. 禁用Prettier缓存

CI环境的文件系统与本地存在差异,Prettier的缓存机制可能导致进程无法正常退出。修改prettier执行命令,添加--no-cache参数:

npm run prettier -- --no-cache

同时检查prettier.config.js配置文件,确保未开启仅本地需要的文件监听类设置。

3. 关闭ESLint并行检查

Angular 18的ESLint默认可能开启并行检查,Docker容器资源受限场景下容易出现进程挂起。可通过两种方式解决:

  • 在.eslintrc.json中添加配置:
    {
      "parallel": false
    }
    
  • 或者在lint命令中显式禁用并行:
    npm run lint -- --no-parallel
    

4. 增加Docker容器资源配额

GitLab Runner默认分配给Docker容器的资源可能不足,导致lint/prettier进程无法正常收尾。在.gitlab-ci.yml中为lint任务添加资源限制:

lint:
  stage: test
  image: node:20-alpine
  resources:
    limits:
      memory: 2G
      cpu: 2
  script:
    - npm ci
    - npm run lint
    - npm run prettier

5. 排查进程挂起的具体原因

若上述方法无效,可添加命令定位卡住的进程:

npm run lint && ps aux

也可使用strace跟踪系统调用,查看进程卡在哪个操作环节。同时检查是否有第三方依赖在lint过程中意外启动了常驻进程(如文件监控、未关闭的数据库连接)。

6. 升级Angular CLI到最新补丁版

Angular 18.1.0可能存在CI环境的已知bug,尝试升级到最新的18.x补丁版本:

npm install @angular/cli@latest --save-dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:37:09