首页 > 系统相关 >2023.6.28 - vue项目打包内存堆栈溢出JS stacktrace

2023.6.28 - vue项目打包内存堆栈溢出JS stacktrace

时间:2023-06-28 15:04:29浏览次数:40  
标签:stacktrace vue 28 应用程序 内存 分配 打包 build


vue项目打包时报错,JS stacktrace : Reached heap limit Allocation failed - JavaScript heap out of memory
这是因为node打包时是有内存空间限制的,node能分配多少空间,默认是根据电脑内存占比来算的。在内存比较小的电脑里,默认分配给node的内存可能不足以支撑起项目运行或者打包。这时就需要手动配置node运行内存,确保项目进程运行时正常有足够的内存完成操作。

下面是配置方法:
在vue 的 package.json文件里找到需要运行的命令加上NODE_OPTIONS=\"--max-old-space-size=4096\"即可。
4096 = 1024 * 4 也就是分配4G内存

要在 package.json 文件中设置增加 Node 内存的选项,可以在 scripts 部分的打包命令中添加环境变量。

例如,假设您的打包命令是 "build": "vite build",您可以将其修改为以下形式:

"scripts": {
  "build": "NODE_OPTIONS=\"--max-old-space-size=4096\" vite build"
}

这样,当您运行 npm run build 命令时,Node 的内存限制将增加到 4096MB。您可以根据需要调整此值。

分配内存够用就好

分配更大的内存给Node并不一定意味着应用程序会更流畅。虽然增加堆内存大小可能有助于处理更大的数据量或复杂的任务,但它也会带来一些潜在的问题。

首先,分配更多的内存可能会导致更长的垃圾回收(GC)暂停时间。当Node的堆内存增加时,垃圾回收器需要更长的时间来清理内存并释放未使用的对象。这可能会导致应用程序在GC期间出现短暂的停顿,影响响应时间和流畅性。

其次,分配过多的内存可能会导致系统资源的浪费。如果应用程序实际上并不需要大量的内存来执行任务,那么分配更多的内存只会浪费系统资源,并且可能影响其他应用程序的性能。

因此,要确定适当的内存分配大小,需要根据应用程序的实际需求进行评估和测试。如果应用程序在当前分配的内存下运行良好,则没有必要分配更多的内存。如果应用程序因内存不足而出现性能问题或崩溃,则可以逐步增加内存分配,并进行性能测试和监测,以找到最佳的内存配置。

标签:stacktrace,vue,28,应用程序,内存,分配,打包,build
From: https://www.cnblogs.com/yehuda/p/17511380.html

相关文章

  • vue3+vite+js配置路径别名
    1、让vscode认识@符号项目下新建jsconfig.json,配置baseUrl,paths参数{"compilerOptions":{"target":"esnext","useDefineForClassFields":true,"module":"esnext","moduleResolution&q......
  • C/C++自助点餐系统[2023-06-28]
    C/C++自助点餐系统[2023-06-28]面向对象程序课程设计任务书【题目】自助点餐系统【目的】通过设计一个小型的自助点餐系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。【要求】1、每个学生必须独立完成;......
  • VUE http大文件断点续传上传
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程并发上传能够达到最大效率。 本文是基于springboot+vue实现的文件上传,本文主要介绍服务端实现文件......
  • vue中watch侦听器,deep和immediate的用法
    1、deep深度监听的用法当监听一个对象时,可能想监听整个对象的变化,而不仅仅是某个属性。但在默认情况下,如果你正在监听formData对象并且修改了formData.username,对应的侦听器并不会触发,它只在formData对象被整个替换时触发。监听整个对象被称作深度监听,通过将deep选项设置为true......
  • 深入剖析:Vue核心之虚拟DOM
    前言使用Vue做项目也有两年时间了,对Vue的api也用的比较得心应手了,虽然对Vue的一些实现原理也耳有所闻,例如虚拟DOM、flow、数据驱动、路由原理等等,但是自己并没有特意去探究这些原理的基础以及Vue源码是如何利用这些原理进行框架实现的,所以利用空闲时间,进行Vue框架相......
  • vue定时器
    exportdefault{methods:{fun1(){consttimer=setInterval(()=>{//需要做的事情},1000);//通过$once来监听定时器,在beforeDestroy钩子可以被清除。this.$once('hook:beforeDestroy',()=>{clearInterval(timer);......
  • VUE框架组件中通信方式(4)
    ref-children-parentref方法既可以获取真实的DOM节点,还可以获取到子组件的实例VC,$parent可以在子组件中获取父组件的实例VC,使用方式是在子组件的方法中传入的参数只能是$parent如:<button@click="handler($parent)">点击我爸爸给我10000元</button>示例代码如下;//父组件代码<......
  • JS中字符串28种常用API总结,substring、slice、JSON.stringify、match、split、search
    一、引言在前端开发中,处理字符串是一项常见的任务。JavaScript提供了一系列的字符串API,用于操作和处理字符串数据。字符串常用的API方法有很多,包括查找字符串、截取字符串、替换字符串、分割字符串、大小写转换、字符串拼接和字符串比较等等。本文将介绍一些常用的字符串API......
  • 前端Vue自定义手机号文本格式化组件手机号码文本转星号
    前端Vue自定义手机号文本格式化组件,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13231效果图如下:cc-format-phone使用方法<!--phone:手机号isStar:是否转星号--><cc-format-phone:phone="":isStar="false"></cc-format-phone>......
  • 前端Vue自定义微信支付弹框dialog alert popup
    前端Vue自定义微信支付弹框dialogalertpopup, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13245效果图如下:实现代码如下:cc-payDialog使用方法<!--:money:支付金额 show:是否显示@cancel:取消 @success:确认支付--><cc-payDia......