位置: 编程技术 - 正文

详解基于node的前端项目编译时内存溢出问题(node基础知识)

编辑:rootadmin

推荐整理分享详解基于node的前端项目编译时内存溢出问题(node基础知识),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于node的网站有哪些,node基础知识,node基础,node基础知识,node基础知识,node基础知识,基于nodejs的项目,基于node的网站有哪些,内容如对您有帮助,希望把文章链接给更多的朋友!

前段时间公司有个基于vue的项目在运行npm run build的时候会报内存溢出,今天在某个技术流交群也有位小伙伴基于angular的项目也出现了这个问题,所以查了一些相关的资料总结了一下,下面会详细说明前端三大框架编译时遇到这个问题具体怎么解决。首先看我模拟出的报错内容

具体截图如下

里面有句关键的话,CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory JavaScript堆内存不足,这里说的 JavaScript 其实就是 Node,我们都知道 Node 是基于V8引擎,在一般的后端开发语言中,在基本的内存使用上没有什么限制,但是我去查阅了相关的资料才发现,在 Node 中通过 JavaScript 使用内存时只能使用部分内存(位系统下约为1.4 GB,位系统下约为0.7 GB),这就是我们编译项目时为什么会出现内存泄露了,因为前端项目如果非常的庞大,webpack 编译时就会占用很多的系统资源,如果超出了V8对 Node 默认的内存限制大小就会出现刚刚我截图的那个错误了,那怎么解决呢?V8依然提供了选项让我们使用更多的内存。Node 在启动时可以传递 --max-old-space-size 或 --max-new-space-size 来调整内存大小的使用限制,示例如下

上述参数在V8初始化时生效,一旦生效就不能再动态改变。如果遇到 Node 无法分配足够内存给 JavaScript 的情况,可以用这个办法来放宽V8默认的内存限制,避免在执行过程中稍微多用了一些内存就轻易崩溃,既然知道了解决办法那就好办了,下面来分别详细说明三大框架下的具体操作。

Vue

详解基于node的前端项目编译时内存溢出问题(node基础知识)

先说vue,因为vue是最简单的,因为基于 vue-cli 生成的项目,vue没有把 package.json 里面 scripts 字段的脚本命令的node命令隐藏起来,我们直接把上面v8提供的选项参数直接写入scripts 字段的 node 命令后就好了,示例如下

直接在 node 后面写上 --max_old_space_size= 就好了,我这里设置的内存大小是4G,这个具体的大小可以根据自己的项目情况来设置就好了。然后再重新运行 npm run build 就可以正常打包构建了。

React

下面来说说 react ,首先如果自己的 react 项目的开发打包环境是自己搭建的话,那解决方法就和上面的 vue 一样,在 node 命令后面加上 --max_old_space_size= 就好了,如果是基于 react-cli 生成的项目那就接着看吧,基于react-cli 生成的项目我们发现package.json 里面 scripts 字段的内容如下

这个就和 vue-cli 不一样了,运行npm run build的时候跑的实际代码是 react-scripts build, 这个脚本是来源于哪里呢,我们打开项目根目录mode_modeles文件夹,会看到一个.bin的目录,react-scripts脚本就定义在这里,在.bin目录下可以找到一个叫react-scripts的文件,打开这个文件,我们发现里面就是一些javascript代码,这个代码的首行有些特殊,我们可以看到#!/usr/bin/env node一行这样的代码,它的意思就是,用当前电脑/usr/bin/env目录下的node来运行该文件里面的javascript代码,看到这里我们都明白了,回到我们最初要解决的问题,我们可以把--max_old_space_size=这行代码写在#!/usr/bin/env node后面,#!/usr/bin/env node --max_old_space_size=,这样就好了,我们的内存溢出问题也就解决了。

Angular

最后开始说 angular ,当然这里说的 angular 是 angular 的最新版本不是angularjs,写angular应用我们一般也都会用angular-cli来搭建项目,如果是自己搭建的开发编译那解决办法和上面的vue是一样的了。用angular-cli来生成的项目也和react一样,cli把node命令也隐藏起来了,package.json 里面 scripts 字段的内容如下

这里的ng命令也和react一样,定义在项目根目录mode_modeles文件夹下的.bin目录里面,.bin目录下我们能找到一个叫ng的文件,在该文件的首行写上#!/usr/bin/env node --max_old_space_size=,这样也就可以解除v8对node的内存使用限制了。

参考

深入浅出Node.js

标签: node基础知识

本文链接地址:https://www.jiuchutong.com/biancheng/380912.html 转载请保留说明!

上一篇:浅谈node中的exports与module.exports的关系(node exit)

下一篇:使用Node.js搭建静态资源服务详细教程(node搭建项目)

  • 停车费增值税税率
  • 安防视频监控工程项目
  • 库存商品余额在借方
  • 资源税类包括哪些税种
  • 应收票据背书转让分录
  • 企业所得税包含哪些税种
  • 报税盘金税盘领的发票能通用吗
  • 电子发票冲红处理
  • 小规模纳税人怎样报税
  • 个体工商户增值税怎么计算
  • 办公用品开普票几个点
  • 资本公积金转增股本所获取的收益属于
  • 出口转内销补交关税
  • 弥补以前年度亏损税局会查吗
  • 非独立核算分公司怎么报税
  • 增值税小规模纳税人免征增值税政策
  • 小规模税局代增值税专用发票怎么交税
  • 收取手续费的委托代销 发票谁来开
  • 二手车没购车发票有影响吗
  • 高速公路过路费税率是多少
  • 纳税额和纳税总额
  • 新会计准则下职工薪酬的变化及影响摘要
  • 结转成本的会计分录摘要怎么写
  • 在win7系统中如何让电脑恢复出厂设置方法
  • 公司向股东借款合法吗
  • 怎么通过mac地址访问设备
  • 暂估入库后结转成本
  • php处理ajax
  • 冲红的会计分录
  • 外贸企业退税需要哪些资料
  • 对外支付需要缴纳增值税吗
  • PHP:realpath_cache_size()的用法_Filesystem函数
  • 固定资产当月出售还要计提折旧吗
  • 出口退税需要满足什么条件外贸
  • 利用php判断是否为素数
  • 企业股权转让所得可以弥补亏损吗
  • 瑞士·劳特布龙嫩小镇
  • php使用什么开发工具
  • 纳税人转让旧房及建筑物
  • 小规模纳税人季报需要报什么
  • 交易性金融资产的入账价值
  • meta最新模型
  • 个税在工资里怎么计提
  • 定额发票需要交契税吗
  • 预收账款包括哪些内容具体明细
  • php中isset函数作用
  • SQL(MSSQLSERVER)服务启动错误代码3414的解决方法
  • db2常用操作语句
  • 减免税款属于政府补助利得吗
  • 企业应纳税所得额的计算原则
  • 跨月的普通发票能作废吗
  • 分销佣金税务账务怎么做
  • 如何计提营业税
  • 支付宝可以对公账户转账吗怎么转
  • 劳务税可以抵扣企业税比例
  • 手撕发票是
  • 投资收益的主要来源有
  • 资产负债表中负债的排列依据是
  • 管理费用具体例子
  • 生产成本和主营业务收入的关系
  • linux使用cp
  • win10微软在哪
  • 进程spoolsv.exe
  • centos7.6忘记密码了怎么办
  • win8.1无线
  • 一键快速关机下载手机版
  • win7指令代码
  • cocos2dx键盘控制移动
  • ComboBox 和 DateField 在IE下消失的解决方法
  • cocos2dx-3.x(二)、坐标系
  • 创建网元
  • python利用csv模块在对csv文件进行操作
  • dos跳转到指定目录
  • js获取内容高度
  • Android---41---Service简介
  • jquery解析html文本
  • jquery 遍历
  • 法人实名采集必须去现场吗
  • 光伏发电地方税收
  • 天津市东丽区军粮城派出所电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设