构建 Vue.js 应用程序时 JavaScript 堆内存不足

Posted

技术标签:

【中文标题】构建 Vue.js 应用程序时 JavaScript 堆内存不足【英文标题】:JavaScript heap out of memory when building Vue.js app 【发布时间】:2019-09-14 11:59:16 【问题描述】:

我正在尝试构建一个用于生产的 vue.js 应用程序。此错误消息总是在中途出现。

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

我已经尝试通过添加--max_old_space_size=4096 来增加内存,甚至尝试将其更改为8192,但无济于事。我使用的是 8 GB RAM 的 Mac,所以我不确定为什么会这样。

这是我为 npm run build 运行的代码:

vue-cli-service build --max_old_space_size=4096

【问题讨论】:

【参考方案1】:

我也遇到了这个问题。 Node 存在内存限制,因此运行此命令有效:

NODE_OPTIONS=--max_old_space_size=4096 npm run build

在 Windows 上,使用:

set NODE_OPTIONS=--max_old_space_size=4096 
npm run build

Node 的默认内存限制为 512MB,运行此命令暂时将其增加到 4GB。

【讨论】:

嗨,你能帮帮我吗?我正在使用vuelaravel 构建一个应用程序。我正在使用带有keep-alive 的动态组件,并且要保持活动状态的最大组件数是5。我正在使用npm run watch 来观察vue 应用程序中的变化。但是,在开发过程中,我随机遇到了上述 OP 和 watch 也关闭的问题。我的问题是,当我将应用程序发送到生产环境时,这是一个问题吗?为什么会突然发生这种情况?这是因为动态组件还是keep-alive?这也可以在生产中发生吗?请帮帮我! @S.Farooq - 我认为如果你把它作为一个独立的问题来创建会很好,有很多可能性,使用 cmets 系统很难探索。【参考方案2】:

如果您有一个大型项目,每个文件夹中都有每个 .less 文件(例如组件、视图),您可能会遇到这个问题。

我已经通过将所有 .less 文件移动到一个文件夹“/assets/less/”并将它们全部导入“/assets/less/index.less”来解决这个问题

【讨论】:

以上是关于构建 Vue.js 应用程序时 JavaScript 堆内存不足的主要内容,如果未能解决你的问题,请参考以下文章

不构建单页应用程序时,如何构建 Vue.js 单文件组件并导入它们?

Vue.js 在构建生产时配置根目录

vue.js2.0的独立构建和运行时构建

web前端技术基础课程讲解之Vue.js构建方式

web前端技术基础课程讲解之Vue.js构建方式

如何在 electron-vue js 中设置应用程序图标