vite打包失败 - out of memory

在做项目时,随着需求的不断增加,我们的代码文件会越来越大,但是在打包时,在 Node 中通过 JavaScript 使用内存的大小却是有限制的。于是,今天打算部署代码时,报错了:

复制代码
<--- JS stacktrace --->

==== JS stack trace =========================================

0: ExitFrame [pc: 00007FF69790ABBD]
Security context: 0x01e6a86408d1
1: decode(aka decode) [000002AD02F874D1] [E:\vite-template\node_modules_rollup@2.40.0@rollup\dist\shared\rollup.js:~133] [pc=0000039464A55451](this=0x037824a004b1 ,0x017863480119 <Very long string[1502653]>)
2: decodedSourcemap(aka decodedSourcemap) [000002AD02F8A979] [E:\vite-template\node_modules_rollup@2.40.0@rollup\dist\shared\roll...

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

解决方案

复制代码
node --max_old_space_size=1024000 ./node_modules/vite/bin/vite.js build

在网上找了以下解决方案:

  1. 升级node版本(未尝试:非必要,不升级,免得带来不兼容问题)

  2. 修改vite.config.ts里面的配置项:sourcemap: false。但是有时我们可能想在部署到dev环境里进行调试(有些场景在部署后才能发现),那关闭了sourcemap,就无法在部署环境进行调试了,也不推荐。

  3. 找了段修改的实例(并不起作用,cross-env找不到,即使安装了也没起作用,不知为何):

    "scripts": {
    "dev": "vite",
    "build": "cross-env NODE_OPTIONS=--max_old_space_size=1024000 vite build",
    "preview": "vite preview"
    }

    // 改进版也不起作用
    "build": "set NODE_OPTIONS= --max_old_space_size=10240 && vite build",

  4. vite下面的issue讨论里面发现了点线索,如下(亲测可用):

    node --max_old_space_size=1024000 ./node_modules/vite/bin/vite.js build

https://github.com/vitejs/vite/issues/2433#issuecomment-792914871https://github.com/vitejs/vite/issues/2433#issuecomment-1159005523

既然原因找到了(node 中使用内存受限),自己的问题也解决了(放宽该限制),探索到此为止。

参考地址:https://github.com/vitejs/vite/issues/2433https://blog.csdn.net/sigoyis/article/details/108005283https://blog.csdn.net/weixin_38883338/article/details/109346148#:~:text=FATAL%20ERROR%3A%20Ineffective%20mark-compacts%20near%20heap%20limit%20Allocation,%E5%8E%9F%E5%9B%A0%E6%98%AF%20JavaScript%E5%A0%86%E5%86%85%E5%AD%98%E4%B8%8D%E8%B6%B3%EF%BC%8CNode%20%E6%98%AF%E5%9F%BA%E4%BA%8EV8%E5%BC%95%E6%93%8E%EF%BC%8C%E5%9C%A8%20Node%20%E4%B8%AD%E9%80%9A%E8%BF%87%20JavaScript%20%E4%BD%BF%E7%94%A8%E5%86%85%E5%AD%98%E6%97%B6%E5%8F%AA%E8%83%BD%E4%BD%BF%E7%94%A8%E9%83%A8%E5%88%86%E5%86%85%E5%AD%98%EF%BC%8864%E4%BD%8D%E7%B3%BB%E7%BB%9F%E4%B8%8B%E7%BA%A6%E4%B8%BA1.4%20GB%EF%BC%89%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%86%85%E5%AD%98%E4%B8%8D%E8%B6%B3%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%B8%8B%E9%9D%A2%E6%96%B9%E6%B3%95%E6%9D%A5%E6%94%BE%E5%AE%BDV8%E9%BB%98%E8%AE%A4%E7%9A%84%E5%86%85%E5%AD%98%E9%99%90%E5%88%B6%E3%80%82

相关推荐
Csvn5 小时前
OpenSpec 详细使用教程
前端
之歆6 小时前
Day19_LESS 完全指南——从入门到工程实践
前端·css·less
云水一下6 小时前
HTML5 从入门到精通:实战收官——从零搭建完整静态网站,综合运用所有知识
前端·html5
不总是6 小时前
Windows 系统 Node.js 免安装版(zip)安装与配置教程(2026 最新)
前端·windows·node.js
冬奇Lab7 小时前
每日一个开源项目(第105篇):Twenty - 跳出 Salesforce 的圈套,定义现代开源 CRM
前端·后端·开源
zhangyao9403307 小时前
开发pc端时,表格的高度怎么设置才能铺满页面
前端·javascript·elementui
kjs--8 小时前
浏览器书签执行脚本
前端
之歆8 小时前
Day16_JavaScript 轮播图与事件工程实战(下篇)
服务器·开发语言·前端·javascript·网络·性能优化
沄媪8 小时前
CSRF 跨站请求伪造
前端·ctf·csrf
kyriewen9 小时前
我关掉了Copilot:因为我写的代码出现在了别人的建议里
前端·javascript·ai编程