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

GitLab CI的Kubernetes容器执行npm run build报HookWebpackError错误

解决GitLab CI Kubernetes容器中npm run build的HookWebpackError问题

问题详情

在GitLab CI的Kubernetes容器中执行npm run build时触发HookWebpackError,提示**"The service is no longer running"**。此前npm install、npm run lint、npm run test均执行正常:

  • 使用镜像:docker.io/library/node:19.3.0-bullseye
  • 运行用户:非root用户(UID=1000),/working/builds目录具备可写权限
  • 错误根源:栈信息指向esbuild-wasm模块,表现类似GitHub Issue #22338但运行环境不同,直接进入容器排查未找到明确方向

错误日志

node@runner-7gbsh-sz-project-9665-concurrent-0c6cv4:~/app$ npm run build -- --output-path=dist

> bluefin-ui@0.0.0 build
> ng build --output-path=dist

Node.js version v19.3.0 detected.
Odd numbered Node.js versions will not enter LTS status and should not be used for production. For more information, please see https://nodejs.org/en/about/releases/.
- Generating browser application bundles (phase: setup)...
✔ Browser application bundle generation complete.
An unhandled exception occurred: The service is no longer running
See "/tmp/ng-88rVP9/angular-errors.log" for further details.
node@runner-7gbsh-sz-project-9665-concurrent-0c6cv4:~/app$ cat /tmp/ng-88rVP9/angular-errors.log
[error] HookWebpackError: The service is no longer running
    at makeWebpackError (/working/builds/app/node_modules/webpack/lib/HookWebpackError.js:48:9)
    at /working/builds/app/node_modules/webpack/lib/Compilation.js:3060:12
    at eval (eval at create (/working/builds/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:115:1)
-- inner error --
Error: The service is no longer running
    at /working/builds/app/node_modules/esbuild-wasm/lib/main.js:786:29
    at sendRequest (/working/builds/app/node_modules/esbuild-wasm/lib/main.js:661:14)
    at start (/working/builds/app/node_modules/esbuild-wasm/lib/main.js:784:9)
    at Object.transform2 [as transform] (/working/builds/app/node_modules/esbuild-wasm/lib/main.js:841:5)
    at /working/builds/app/node_modules/esbuild-wasm/lib/main.js:1928:55
    at new Promise (<anonymous>)
    at Object.transform (/working/builds/app/node_modules/esbuild-wasm/lib/main.js:1928:14)
    at EsbuildExecutor.transform [as esbuildTransform] (/working/builds/app/node_modules/esbuild-wasm/lib/main.js:1751:62)
    at EsbuildExecutor.transform (/working/builds/app/node_modules/@angular-devkit/build-angular/src/webpack/plugins/esbuild-executor.js:113:21)
    at async /working/builds/app/node_modules/@angular-devkit/build-angular/src/webpack/plugins/css-optimizer-plugin.js:70:53

项目依赖版本

node@runner-7gbsh-sz-project-9665-concurrent-0xj5hz:~/app$ npm ls
bluefin-ui@0.0.0 /working/builds/app
+-- @angular-devkit/build-angular@15.0.4
+-- @angular-eslint/builder@15.1.0
+-- @angular-eslint/eslint-plugin-template@15.1.0
+-- @angular-eslint/eslint-plugin@15.1.0
+-- @angular-eslint/schematics@15.1.0
+-- @angular-eslint/template-parser@15.1.0
+-- @angular/animations@15.0.4
+-- @angular/cli@15.0.4
+-- @angular/common@15.0.4
+-- @angular/compiler-cli@15.0.4
+-- @angular/compiler@15.0.4
+-- @angular/core@15.0.4
+-- @angular/forms@15.0.4
+-- @angular/platform-browser-dynamic@15.0.4
+-- @angular/platform-browser@15.0.4
+-- @angular/router@15.0.4
+-- @types/jasmine@4.0.3
+-- @types/node@18.11.17
+-- @typescript-eslint/eslint-plugin@5.44.0
+-- @typescript-eslint/parser@5.44.0
+-- eslint@8.30.0
+-- jasmine-core@4.3.0
+-- karma-chrome-launcher@3.1.1
+-- karma-coverage@2.2.0
+-- karma-jasmine-html-reporter@2.0.0
+-- karma-jasmine@5.1.0
+-- karma@6.4.1
+-- node-addon-api@3.2.1 extraneous
+-- node-gyp-build@4.5.0 extraneous
+-- pify@4.0.1 extraneous
+-- rxjs@7.5.7
+-- tslib@2.4.1
+-- typescript@4.8.4
+-- yocto-queue@0.1.0 extraneous
`-- zone.js@0.11.8


node@runner-7gbsh-sz-project-9665-concurrent-0xj5hz:~/app$ npm version
{
  'bluefin-ui': '0.0.0',
  npm: '9.2.0',
  node: '19.3.0',
  v8: '10.8.168.21-node.8',
  uv: '1.44.2',
  zlib: '1.2.13',
  brotli: '1.0.9',
  ares: '1.18.1',
  modules: '111',
  nghttp2: '1.51.0',
  napi: '8',
  llhttp: '8.1.0',
  uvwasi: '0.0.13',
  openssl: '3.0.7+quic',
  cldr: '42.0',
  icu: '72.1',
  tz: '2022f',
  unicode: '15.0',
  ngtcp2: '0.8.1',
  nghttp3: '0.7.0'
}

解决方案

1. 切换到Node.js LTS版本

Node.js 19是非LTS版本,存在兼容性隐患。Angular 15官方推荐使用Node.js 16.14.x或18.10+的LTS版本,将镜像替换为docker.io/library/node:18.17.0-bullseye(或其他18.x LTS版本),避免非稳定版本的底层bug。

2. 禁用esbuild-wasm,使用本地二进制版本

修改angular.json中的构建配置,强制Angular使用本地esbuild二进制而非wasm版本:

"architect": {
  "build": {
    "builder": "@angular-devkit/build-angular:browser",
    "options": {
      "esbuildOptions": {
        "binary": true
      }
    }
  }
}

同时执行npm install esbuild --save-dev,确保本地安装了esbuild二进制文件。

3. 增加容器资源配额

Kubernetes容器内存不足可能导致esbuild-wasm进程崩溃,在GitLab CI的job配置中提升资源限制:

jobs:
  build:
    resources:
      requests:
        memory: "2Gi"
        cpu: "1"
      limits:
        memory: "4Gi"
        cpu: "2"

4. 清理构建缓存

清理npm和Angular的缓存,避免缓存文件损坏导致的问题:

npm cache clean --force
rm -rf node_modules package-lock.json
npm install
npx ng cache clean

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:20:23