angular打包报错内存溢出 nodejs 执行失败报错 “JavaScript heap out of memory” 的解决办法

报错信息很直观地指出是内存溢出了。是什么导致了内存溢出呢?其根本原因在于 nodejs 默认限制了最大可使用的内存大小。

nodejs V8 引擎在 64 位机器上默认限制使用内存最大不超过 1.7GB,超过这个限制官方建议尝试优化为多线程方式。

解决办法可以是增加 nodejs 可使用的最大内存大小,也可以从降低程序内存消耗的角度入手。

解决办法一: 设置 nodejs 配置项 配置项 max_old_space_size

如果希望超越 V8 引擎默认的内存大小限制,可以通过设置配置项 max_old_space_size来解决。

  • 方法一:设置环境变量NODE_OPTIONS

示例:

# windows
set NODE_OPTIONS=--max_old_space_size=4096
# mac/linux
export NODE_OPTIONS=--max_old_space_size=4096
  • 方法二:在运行命令中增加 --max_old_space_size=4096

例如可以修改 package.json 的 scripts 脚本,示例如下:

{
  "scripts": {
    "serve": "node --max_old_space_size=8000 ./node_modules/@angular/cli/bin/ng serve",
    "prod": "node --max_old_space_size=8000 ./node_modules/@angular/cli/bin/ng build --prod",
  }
}

解决办法二:项目构建流程关闭 sourcemap 生成

以 Angular 为例,对于越来越庞大的 Angular 项目,Angular 编译时间、内存消耗也越来越长,其中 sourceMap 的生成占据了绝大部分的时间。

在开发过程中可以关闭 sourceMap 的生成,加快编译构建的速度。方法为在 angular.json中设置 build.options.sourceMap 的值为 false,同时在 tsconfig.json 中设置 compilerOptions.sourceMap 的值为 false

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏c#开发者

页面彈出各种窗口詳解

一、 基本变化 <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'neww...

57320
来自专栏有趣的django

BBS论坛(二十一)

11120
来自专栏jessetalks

Javascript基础回顾 之(一) 类型

  本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Jav...

13250
来自专栏smy

对Javascript 类、原型链、继承的理解

  和其他面向对象的语言(如Java)不同,Javascript语言对类的实现和继承的实现没有标准的定义,而是将这些交给了程序员,让程序员更加灵活地(当然刚开始...

10710
来自专栏Jerry的SAP技术分享

代码重构那些事儿

大家好,这是我今天演讲的目录,分Java,JavaScript,ABAP三门编程语言来讲述。

10730
来自专栏机器人课程与技术

Cozmo人工智能机器人SDK使用笔记(5)-时序部分async_sync

Cozmo首先寻找一个立方体。 找到立方体后,立方体的灯以循环方式绿色闪烁,然后等待轻敲立方体。

16030
来自专栏张首富-小白的成长历程

通过RKE 安装kubernetes

可以配置多条,以数组的形式编写,地址需要添加协议头。编辑/etc/docker/daemon.json加入以下内容

98050
来自专栏Web行业观察

8 个 WebAssembly 应用案例直击 /转

除了瀏覽器業者、遊戲業者大力支援WebAssembly外,許多需要加速效能表現的大型網頁應用或線上工具,也都能得利於WebAssembly的超快執行速度。目前W...

42440
来自专栏码匠的流水账

聊聊flink的Execution Plan Visualization

本文主要研究一下flink的Execution Plan Visualization

35940
来自专栏null的专栏

python基础知识——函数

在Python中,任何的变量都是对象,所以参数只支持引用传递的方式,在这样的情况下,形式参数和实际参数都指向的是内存中的同一个存储空间。

8320

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励