Github Actions构建时JavaScript堆内存不足问题求助
解决Github Actions中npm build的JavaScript堆内存不足问题
你遇到的FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory错误,确实可以通过设置NODE_OPTIONS环境变量扩展Node.js堆内存解决,但关键是要把环境变量配置在正确的位置——env不需要加「-」,它是步骤、job或全局层级的配置项,必须和对应层级的其他配置同级。
几种正确的配置方式:
- 仅给build步骤配置(推荐,精准控制)
将env和该步骤的run、working-directory同级放置:
- run: npm run build --if-present working-directory: client env: NODE_OPTIONS: "--max-old-space-size=4096"
- 给整个build job配置(所有步骤共享该变量)
在jobs.build层级下添加env:
jobs: build: runs-on: self-hosted env: NODE_OPTIONS: "--max-old-space-size=4096" strategy: matrix: node-version: [16.x] # 其他配置...
- 全局配置(整个Workflow所有步骤生效)
在Workflow最顶层(name下方)添加env:
name: Node.js CI env: NODE_OPTIONS: "--max-old-space-size=4096" on: push: branches: ['master']
修改后的完整Workflow示例(以步骤级配置为例):
name: Node.js CI on: push: branches: ['master'] jobs: build: runs-on: self-hosted strategy: matrix: node-version: [16.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm i - run: npm i working-directory: client - run: npm run build --if-present working-directory: client env: NODE_OPTIONS: "--max-old-space-size=4096"
注意事项:
- 你之前把
env放在run步骤下方是错误的,YAML中每个步骤是一个独立对象,run、env、working-directory都是该对象的属性,必须同级排列,不能嵌套。 - 如果你的self-hosted runner本身可用内存不足4GB,即使设置
4096也可能无效,需要确认runner的硬件配置。
内容的提问来源于stack exchange,提问作者zuZuu
相关产品推荐
相关产品推荐

