Docker构建Vite项目内存溢出:从Heap Limit报错到完美解决的剖析

问题现象:诡异的"消失的index.html"

最近在CI/CD流水线中遇到诡异现象:使用Docker构建Vite项目时,dist目录中缺少关键的index.html文件,但本地构建完全正常。报错截图显示关键信息:

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

在这里插入图片描述

[Docker Image CI/cmit-docker-ci]   | <--- Last few GCs --->
[Docker Image CI/cmit-docker-ci]   | 
[Docker Image CI/cmit-docker-ci]   | [42:0xffff885545d0]   119253 ms: Mark-Compact (reduce) 2041.5 (2083.8) -> 2040.4 (2084.2) MB, 1781.11 / 0.04 ms  (+ 883.5 ms in 150 steps since start of marking, biggest step 55.1 ms, walltime since start of marking 2996 ms) (average mu = 0.426, current m[42:0xffff885545d0]   122669 ms: Mark-Compact (reduce) 2041.4 (2084.2) -> 2041.1 (2084.7) MB, 3414.29 / 0.00 ms  (average mu = 0.241, current mu = 0.001) allocation failure; scavenge might not succeed
[Docker Image CI/cmit-docker-ci]   | 
[Docker Image CI/cmit-docker-ci]   | 
[Docker Image CI/cmit-docker-ci]   | <--- JS stacktrace --->
[Docker Image CI/cmit-docker-ci]   | 
[Docker Image CI/cmit-docker-ci]   | FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
[Docker Image CI/cmit-docker-ci]   |

一、问题定位过程

1. 错误日志分析

从GC日志可以看出内存耗尽的全过程:

[42:0xffff885545d0] 119253 ms: Mark-Compact (reduce) 2041.5 -> 2040.4 MB
...
scavenge might not succeed
  • Node进程尝试回收内存失败(Mark-Compact阶段)
  • 堆内存限制约2GB时崩溃(默认堆内存上限)

2. Docker环境特殊性验证

通过对比实验发现:

环境 结果
本地Win 构建成功
Docker容器 构建失败

二、根本原因解析

1. Vite构建内存机制

现代前端构建工具的内存消耗主要来自:

  • 依赖图分析(尤其monorepo项目)
  • 代码转译(Babel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想想你说过的话

最喜欢你一言不合就打赏的样子了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值