首页 > 系统相关 >关于vite项目内存溢出无法正常打包的问题

关于vite项目内存溢出无法正常打包的问题

时间:2023-04-17 10:46:34浏览次数:41  
标签:插件 问题 溢出 版本 unocss vite 打包 内存

问题

vite+ts+vue3项目中时pnpm run build构建项目导致无法正常打包

解决思路

排查问题时发现禁用router插件后能正常打包,禁用掉则会导致溢出。
进一步发现是因为.vue文件过多的原因。
考虑到可能是nodejs默认的内存不够,增大内存试试。增加到24GB后可以成功打包。
项目继续开发一个月后添加了不少.vue文件,遂又不能打包。
百度没有找到问题。

中文互联网搜索这个问题 全是说nodejs的内存不够,但是我已经增加到24GB后还无效。猜测不断增加内存是能解决这个问题的,但只能治标不能治本,同时打包时间越来越长,需要从根本上解决这个问题。

由于使用了自动生成路由的插件vite-plugin-pages,会不会是这个插件问题?
排查源码发现没有问题。
于是拿之前其他项目所用的插件package.json和现在项目进行对应的插件版本进行替换,项目就能成功打包。
对插件版本进行排查后,发现是unocss插件的问题

问题原因

根据插件 issues#1931
unocss插件的版本bug,修改配置后就能构建成功,原因可能是插件的相关图标问题,没有进一步研究。

presetIcons()plugins: [UnoCSS({presets: []})]
// @unocss/preset-icons

查看相关版本的changelog可以得知,在版本v0.47.1-0.47.3中会出现该问题

解决办法

直接解决:

  • 增大内存,同时增大nodejs的使用内存 ( 插件 fix-memory-limit ),但随着vue文件的增大还是会导致问题的再次出现。
  • 禁用unocss插件的图标

根本解决:

  • unocss回退到v0.46.5版本以前能解决问题(只要版本号不是在v0.47.1-0.47.3应该就可以,博主是将unocss回退到v0.46.2版本)

参考来源

标签:插件,问题,溢出,版本,unocss,vite,打包,内存
From: https://www.cnblogs.com/GoodMemoryBlog/p/17325015.html

相关文章

  • vite启动vue项目报错import { performance } from 'node:perf_hooks'
    import{performance}from'node:perf_hooks'^^^^^^SyntaxError:Cannotuseimportstatementoutsideamodule要求node版本要大于16 使用nvm切换node版本 成功运行......
  • 内存相关
    redis中的info指标#redis中key-value使用的内存量used_memory:2709112used_memory_human:2.58M#从操作系统层面redis内存占用量used_memory_rss:5378048used_memory_rss_human:5.13M#内存使用峰值used_memory_peak:6786120used_memory_peak_human:6.47Mused_me......
  • C++中的虚函数表实现机制——对于虚表的内存布局讲解得非常好
    C++中的虚函数表实现机制摘自:https://blog.twofei.com/496/前言大家都应该知道C++的精髓是虚函数吧?虚函数带来的好处就是:可以定义一个基类的指针,其指向一个继承类,当通过基类的指针去调用函数时,可以在运行时决定该调用基类的函数还是继承类的函数.虚函数是实现多态(......
  • Vue3中(vite.config.js)配置打包的时候去除console.log
    参考:https://www.cnblogs.com/lovewhatIlove/p/16476165.html安装tersernpmadd-Dterservite中配置import{defineConfig}from"vite";importvuefrom"@vitejs/plugin-vue";importvueJsxfrom"@vitejs/plugin-vue-jsx";importvisua......
  • 内存对齐详解 (C++代码)
    内存对齐详解(C++代码)目录内存对齐详解(C++代码)Test1:结构体对齐Test2:时间开销对比我每天都有读一下面经的习惯,从里面抽一些我不太懂的内容使用dfs的思想去探索,感谢有了GPT4,探索之路变得有趣和高效许多。今天这个Topic如下,是腾讯日常实习面经中的内容编译内存相关:C+......
  • 一文弄懂Python中的内存管理
    1.引言Python是一种解释性语言,这意味着它在运行之前不需要编译。当Python程序运行时,它会动态地为所有变量和对象分配相应的内存。这意味着Python的内存管理是自动处理的,使得开发人员能够专注于编写代码,而不用担心相关内存分配和释放。本文就Python的内存管理进行详述,闲话少说,我们......
  • Delphi FDMemTable内存表用法及简单操作函数封装(转)
    在某些场景下当轻量级的应用需要在内存中缓存数量比较多且字段比较多的高频使用数据时。以前我都是采用Ini或直接使用sqlite数据库。JSON也试过基本无法或很难实现需要的功能,因为当涉及某一同类型对象多字段多列时不通过遍历基本无法直接取到或修改数据。这样就导致了效率的低下。......
  • (二)vue组件化基础跟脚手架vue-cli/vite
    vue组件化开发思想 组件化的思想:将一个页面的所有的处理逻辑放到一起,处理起来就会非常复杂,而且不利于后续的管理以及扩展;如果,将一个页面拆分为一个个小功能块,每个功能块完成属于自己这部分独立的功能,那么之后整个页面的管理和维护就变得非常容易了;就像搭积木一样来搭建......
  • c++核心编程—内存分区模型
    一、概述c++在执行时,将内存大致分为4个区域1、代码区:存放函数体的二进制代码,由操作系统进行管理2、全局区:存放全局变量和静态变量以及常量3、栈区:由编译器自动分配释放,存放函数的参数,局部变量等4、堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区......
  • cpp结构体的sizeof涉及到的字节对齐问题代码-内存初探
    #include<iostream>usingnamespacestd;intmain(){structS1{chara;//占8个,因为要和double对齐doubleb;//占8个字节};cout<<sizeof(S1)<<endl;//16/*内存地址排列方式[00,01,02,03,04,05,06,07,08,09,1......