当前位置: 首页 > news >正文

pnpm build打包时占内溢出

        这两天在打包H5网页的时候失败,总是提示下方错误

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

严重错误:堆限制附近标记压缩无效分配失败 - JavaScript 堆内存不足

        尝试了多种方法,有一种方式是直接命令行设置的,还有直接在package.json文件的build前面加命令的,但是没有效果,下方的解决方法亲测有效。

rendering chunks (4)...
<--- Last few GCs --->[8676:000001FAEAF60F70]   101479 ms: Mark-sweep (reduce) 2036.2 (2083.2) -> 2034.8 (2082.1) MB, 3196.4 / 0.2 ms  (average mu = 0.247, current mu = 0.162) allocation failure GC in old space requested
[8676:000001FAEAF60F70]   103959 ms: Mark-sweep (reduce) 2035.3 (2082.4) -> 2035.3 (2082.4) MB, 2478.4 / 0.0 ms  (average mu = 0.147, current mu = 0.001) allocation failure GC in old space requested<--- JS stacktrace --->FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory1: 00007FF67AF3B34F v8::internal::CodeObjectRegistry::~CodeObjectRegistry+1235992: 00007FF67AEC8CB6 v8::internal::MicrotaskQueue::GetMicrotasksScopeDepth+652063: 00007FF67AEC9D8D node::OnFatalError+3014: 00007FF67B7FC36E v8::Isolate::ReportExternalAllocationLimitReached+945: 00007FF67B7E694D v8::SharedArrayBuffer::Externalize+7816: 00007FF67B689F2C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+14687: 00007FF67B696BD9 v8::internal::Heap::PublishPendingAllocations+11298: 00007FF67B693BAA v8::internal::Heap::PageFlagsAreConsistent+28429: 00007FF67B686809 v8::internal::Heap::CollectGarbage+2137
10: 00007FF67B6849C0 v8::internal::Heap::AllocateExternalBackingStore+2000
11: 00007FF67B6A9546 v8::internal::Factory::NewFillerObject+214
13: 00007FF67B88A061 v8::internal::SetupIsolateDelegate::SetupHeap+494417
14: 000001FAECEE4B52

现在下载increase-memory-limit 和 cross-env

npm install cross-env increase-memory-limit

到package.json文件夹下添加配置如下:

"fix-memory-limit": "cross-env LIMIT=8048 increase-memory-limit",

 添加完配置之后,在项目目录下运行

pnpm run fix-memory-limit

完成之后,直接打包或运行代码。

小计:没有很清楚造成这个nodejs的栈内存溢出的原因,就看到网上很多都是修改node的内存的,具体的解释就是在打包的时候数据没办法被释放,导致内存溢出。
不是很理解,一下是AI给的可能得原因:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 这个错误通常发生在 Node.js 应用程序或脚本在执行过程中耗尽了可用的 JavaScript 堆内存。在 Vue.js 或其他前端框架的打包过程中遇到这个错误,可能有以下几个原因:内存限制: Node.js 在启动时默认分配的堆内存大小有限,对于64位系统,默认值通常是1.4GB左右。当构建过程中的 JavaScript 对象和数据结构占用的内存超过了这个限制,就会出现内存溢出。复杂的构建任务: 构建工具如 Webpack 可能在处理大型项目或复杂配置时消耗大量内存。例如,解析大量的模块依赖、执行 babel 转译、压缩代码、处理样式资源等操作都可能消耗大量内存。循环引用或泄漏: 如果构建过程中存在内存泄漏或者不正确的垃圾回收机制,会导致不再使用的对象无法被及时释放,从而逐渐消耗掉可用的内存。插件或加载器问题: 某些构建插件或加载器可能在执行时消耗过多内存,尤其是当它们处理大文件或进行深度递归操作时。并发构建: 如果同时运行多个构建任务,每个任务都会消耗内存,可能导致总内存消耗超出系统限制。解决这个问题的方法包括:增加内存限制: 可以通过增加 Node.js 启动时的最大堆内存来解决。例如,对于 Vue CLI 项目,可以在 package.json 中的脚本命令前添加 --max_old_space_size=<size> 参数,如 npm run build -- --max_old_space_size=4096,将最大堆内存设置为4GB。优化构建配置: 审查并优化 Webpack 配置,移除不必要的插件或加载器,减少并行执行的任务数量,使用更高效的编译选项。清理内存泄漏: 使用内存分析工具检查构建过程中是否存在内存泄漏,并修复相关问题。升级构建工具: 升级到最新版本的构建工具和依赖包,新版本可能已经修复了一些已知的性能问题和内存消耗问题。使用专用构建服务器: 如果本地机器经常遇到内存不足的问题,可以考虑使用具有更多内存的专用构建服务器来执行构建任务。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【 DHT11 温湿度传感器】使用STC89C51读取发送到串口、通过时序图编写C语言
  • Python 二进制求和
  • 第五章:卷-将磁盘挂载到容器
  • linux环境交叉编译openssl库,以使Qt支持https
  • (二)原生js案例之数码时钟计时
  • 使用ChatGPT来撰写和润色学术论文的教程(含最新升级开桶ChatGpt4教程)​​
  • MySQL事务管理(上)
  • C++ versions less than C++14/11 are not supported.报错
  • vscode 远程 Ubuntu 系统
  • 神经网络模型实现(训练、测试)
  • 我的创作一周年纪念日
  • Spring Boot 中使用 Resilience4j 实现弹性微服务的简单了解
  • 自学鸿蒙HarmonyOS的ArkTS语言<十>@BuilderParam装饰器
  • ERROR: No matching distribution found for execjs
  • 《逻辑006:页面跳转并传参》
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【RocksDB】TransactionDB源码分析
  • Docker: 容器互访的三种方式
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • JS数组方法汇总
  • Node + FFmpeg 实现Canvas动画导出视频
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpringCloud集成分布式事务LCN (一)
  • Vue UI框架库开发介绍
  • Vue.js-Day01
  • 创建一个Struts2项目maven 方式
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 关于extract.autodesk.io的一些说明
  • 基于HAProxy的高性能缓存服务器nuster
  • 计算机常识 - 收藏集 - 掘金
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 《码出高效》学习笔记与书中错误记录
  • elasticsearch-head插件安装
  • HanLP分词命名实体提取详解
  • zabbix3.2监控linux磁盘IO
  • ​Java并发新构件之Exchanger
  • ​数据结构之初始二叉树(3)
  • # Redis 入门到精通(一)数据类型(4)
  • #13 yum、编译安装与sed命令的使用
  • #Linux(make工具和makefile文件以及makefile语法)
  • ( 10 )MySQL中的外键
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (黑马C++)L06 重载与继承
  • (接口封装)
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十) 初识 Docker file
  • (转)h264中avc和flv数据的解析