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

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或全局层级的配置项,必须和对应层级的其他配置同级。

几种正确的配置方式:

  1. 仅给build步骤配置(推荐,精准控制)
    将env和该步骤的run、working-directory同级放置:
- run: npm run build --if-present
  working-directory: client
  env:
    NODE_OPTIONS: "--max-old-space-size=4096"
  1. 给整个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]
        # 其他配置...
  1. 全局配置(整个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:54:43