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

Vite与Webpack打包内存溢出问题优雅处理方式

Vite与Webpack打包内存溢出问题处理

文章目录

  • Vite与Webpack打包内存溢出问题处理
  • 1. Vite
    • 1. 打包错误提示
    • 2. 命令行方式解决
    • 3. 配置环境变量方式解决
      • 1. 设置变量
      • 2. 配置系统的环境变量
  • 2. Webpack
    • 1. 打包错误提示
    • 2. 命令行方式解决
    • 3. 配置环境变量方式解决
      • 1. 设置变量
      • 2. 配置系统的环境变量

  1. Node.js8.0之前,要限制node.js内存,则需要通过increase-memory-limit插件来完成,安装命令npm install -g increase-memory-limit ;
  2. Nodes.js8.0之后,可以使用NODE_OPTIONS 环境变量全局设置 max_old_space_size值来修改内存大小;
  3. 下面主要以在package.json中的script中配置node --max_old_space_size=内存大小来解决Vite与WebPack环境下开发或打包时遇到的内存溢出问题

1. Vite

Vite下可以使用两种方式来解决此问题:

  1. 使用设置命令行参数来解决

  2. 使用环境变量

1. 打包错误提示


<--- Last few GCs --->[31456:00000245F8E00080]    78693 ms: Mark-Compact 4047.1 (4135.9) -> 4035.6 (4140.4) MB, 1905.55 / 0.00 ms  (average mu = 0.475, current mu = 0.329) allocation failure; scavenge might not succeed
[31456:00000245F8E00080]    83823 ms: Mark-Compact 4051.8 (4140.4) -> 4040.3 (4144.9) MB, 5028.55 / 0.00 ms  (average mu = 0.219, current mu = 0.020) allocation failure; scavenge might not succeed<--- JS stacktrace --->FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory1: 00007FF61BBF436F node::SetCppgcReference+156952: 00007FF61BB6C686 EVP_MD_meth_get_input_blocksize+761023: 00007FF61BB6E471 EVP_MD_meth_get_input_blocksize+837614: 00007FF61C5DB281 v8::Isolate::ReportExternalAllocationLimitReached+655: 00007FF61C5C4A18 v8::Function::Experimental_IsNopFunction+13366: 00007FF61C4260A0 v8::Platform::SystemClockTimeMillis+6596967: 00007FF61C423128 v8::Platform::SystemClockTimeMillis+6475448: 00007FF61C43843A v8::Platform::SystemClockTimeMillis+7343469: 00007FF61C438CB7 v8::Platform::SystemClockTimeMillis+736519
10: 00007FF61C4475DF v8::Platform::SystemClockTimeMillis+796207
11: 00007FF61C1079F5 v8::CodeEvent::GetFunctionName+116773
12: 00007FF5BC65AAFAELIFECYCLE  Command failed with exit code 134.

2. 命令行方式解决

  1. Vite打包执行的是node_modules/vite/bin/vite.js,所以在打包时修改package.json中的script脚本即可
  2. 关于内存设置的大小,可根据自己电脑内存的实际大小衡量来设定,下面以设置 8G = 8 * 1024 = 8192MB为例
  1. 修改前
"scripts": {"build": "vite build --mode production &&vue-tsc --noEmit",}
  1. . 修改后
{"scripts": {"build": "node --max_old_space_size=8192 node_modules/vite/bin/vite.js build --mode production &&vue-tsc --noEmit"}
}

3. 配置环境变量方式解决

1. 设置变量

在执行打包命令前,设置变量方式更改node.js内存限制,下面以Windows为例,Linux中使用export NODE_OPTIONS=--max-old-space-size=8192来设置

  1. 仅当前窗口有效
# windows
set NODE_OPTIONS --max-old-space-size=8192
  1. 当前用户永久有效
# Windows
setx NODE_OPTIONS --max_old_space_size=8192 # 8GB

2. 配置系统的环境变量

在系统的环境变量中新增环境变量配置,内容如下:

变量名(N): NODE_OPTIONS
变量值(V): --max-old-space-size=8192

2. Webpack

Webpack下打包时解决内存溢出的方式与Vite类似,也使用两种方式来解决此问题:

  1. 使用设置命令行参数来解决

  2. 使用环境变量

1. 打包错误提示

如下图:

在这里插入图片描述

2. 命令行方式解决

以Webpack + Vue-cli脚手架为例,如果非Vue-cli脚手架,根据实际情况自行修改即可。

  1. Webpack包执行的是node_modules/@vue/cli-service/bin/vue-cli-service.js,所以在打包时修改package.json中的script脚本即可;
  2. 关于内存设置的大小,可根据自己电脑内存的实际大小衡量来设定,下面以设置 8G = 8 * 1024 = 8192MB为例
  1. 修改前
 "scripts": {"dev": "vue-cli-service serve","build": "vue-cli-service build"}
  1. . 修改后
"scripts": {"dev": "node --max_old_space_size=8192 node_modules/@vue/cli-service/bin/vue-cli-service.js serve","build": "node --max_old_space_size=8192 node_modules/@vue/cli-service/bin/vue-cli-service.js build",}

3. 配置环境变量方式解决

1. 设置变量

在执行打包命令前,设置变量方式更改node.js内存限制,下面以Windows为例,Linux中使用export NODE_OPTIONS=--max-old-space-size=8192来设置

  1. 仅当前窗口有效
# windows
set NODE_OPTIONS --max-old-space-size=8192
  1. 当前用户永久有效
# Windows
setx NODE_OPTIONS --max_old_space_size=8192 # 8GB

2. 配置系统的环境变量

在系统的环境变量中新增环境变量配置,内容如下:

变量名(N): NODE_OPTIONS
变量值(V): --max-old-space-size=8192
http://www.lryc.cn/news/293291.html

相关文章:

  • sqlalchemy——@listens_for
  • MySQL进阶之锁(全局锁以及备份报错解决)
  • C#实现windows系统重启、关机
  • JS中Set和Map用法详解
  • 使用nginx对视频、音频、图片等静态资源网址,加token签权
  • [每周一更]-(第86期):NLP-实战操作-文本分类
  • 【Springcloud篇】学习笔记五(十章):Gateway网关
  • Linux开发工具
  • C++ 动态规划 线性DP 最长共同子序列
  • 【备战蓝桥杯】——循环结构终篇
  • 为什么说Python语法简单?
  • 【HarmonyOS应用开发】ArkUI 开发框架-进阶篇-管理组件状态(九)
  • EF Core入门例子(以SqLite为数据库)
  • centos7 安装nginx
  • 【Linux Day14 UDP网络通讯】
  • 指针的深入了解6
  • PHP之PDO_MYSQL扩展安装步骤
  • 【pytorch】nn.linear 中为什么是y=xA^T+b
  • vite打包原理
  • 导出pdf 加密、加水印、加页脚
  • Flutter 仿抖音 TikTok 上下滑动 播放视频
  • 计算机网络——网络层(2)
  • 01-16Maven-SpringBoot入门
  • 微信小程序(二十七)列表渲染改变量名
  • k8s之安装部署及kuboard发布应用
  • JProfiler for Mac:提升性能和诊断问题的终极工具
  • 力扣202-快乐数
  • 牛客寒假训练营H题
  • ubuntu22.04@laptop 常用基础环境安装
  • Linux第41步_移植ST公司uboot的第2步_修改网络驱动_USB OTG设备树_LCD驱动_以及编译和烧写测试