关于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版本)

参考来源

posted @ 2023-04-17 10:30  DAmarkday  阅读(1628)  评论(0编辑  收藏  举报