如何增加 Ionic 的 Javascript 堆大小
How to increase Javascript heap size for Ionic
我在 运行 构建具有 --release
和 --prod
标志的 Ionic 应用程序时遇到 内存不足 问题。不幸的是,在接缝处,Node 允许使用的 space 内存不足以处理该进程,它会产生以下错误(可能是在没有内存块可用于执行操作之后):
正如 回答中所建议的那样,我试图在构建命令之前从 package.json
start
脚本中利用 max_old_space_size
标志但无济于事。主要是因为节点进程在设置标志后通过 Ionic CLI 方式在内部 运行。
我还尝试按照 答案 中的建议重新安装具有更大堆大小的 Ionic ,但这似乎只能解决安装过程中的内存限制问题Ionic 包本身,而不是通过 CLI 使用 Ionic 进行的任何后续操作。
在此先感谢您的帮助。 :)
离子信息:
cli packages: (D:\ionic\<...>\node_modules)
@ionic/cli-utils : 1.9.2
ionic (Ionic CLI) : 3.9.2
global packages:
Cordova CLI : 7.0.1
Gulp CLI : CLI version 3.9.1 Local version 3.9.1
local packages:
@ionic/app-scripts : 2.1.4
Cordova Platforms : android 6.2.3 ios 4.5.0
Ionic Framework : ionic-angular 3.3.0
System:
Android SDK Tools : 25.2.2
Node : v6.10.2
npm : 4.0.5
OS : Windows 7
唯一的解决方案是在 Ionic CLI 启动进程时在内部增加 Javascript 堆的内存大小(从 Ionic 的角度来看)。
post on Github by @timothybclayton on a similar issue under ionic-app-scripts 帮助我解决了这个问题。
但是,我不得不以完全不同的方式来做,因为我有 Nodist 作为 NodeJS 的包管理器。因此,我不得不转到 Nodist 安装目录下的 /bin
文件夹并调整 ionic.cmd
文件。
这是 ionic.cmd
文件的样子,因为它现在为 NodeJS 提供了足够的内存来执行该过程:
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" --max_old_space_size=12288 "%~dp0\node_modules\ionic\bin\ionic" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node --max_old_space_size=12288 "%~dp0\node_modules\ionic\bin\ionic" %*
)
希望这对遇到类似问题的其他人有所帮助,不仅对 Ionic,而且对使用 NodeJS 的任何其他内存密集型进程。
我将其标记为重复项,但以防万一有人在它合并之前遇到它,我在 :
上发布了针对此问题的现代解决方案
As of v8.0 shipped August 2017, the NODE_OPTIONS environment variable exposes this configuration (see NODE_OPTIONS has landed in 8.x!). Per the article, only options whitelisted in the source are permitted, which includes "--max_old_space_size".
So I put in my .bashrc:
export NODE_OPTIONS=--max_old_space_size=4096
我在 运行 构建具有 --release
和 --prod
标志的 Ionic 应用程序时遇到 内存不足 问题。不幸的是,在接缝处,Node 允许使用的 space 内存不足以处理该进程,它会产生以下错误(可能是在没有内存块可用于执行操作之后):
正如 package.json
start
脚本中利用 max_old_space_size
标志但无济于事。主要是因为节点进程在设置标志后通过 Ionic CLI 方式在内部 运行。
我还尝试按照
在此先感谢您的帮助。 :)
离子信息:
cli packages: (D:\ionic\<...>\node_modules)
@ionic/cli-utils : 1.9.2
ionic (Ionic CLI) : 3.9.2
global packages:
Cordova CLI : 7.0.1
Gulp CLI : CLI version 3.9.1 Local version 3.9.1
local packages:
@ionic/app-scripts : 2.1.4
Cordova Platforms : android 6.2.3 ios 4.5.0
Ionic Framework : ionic-angular 3.3.0
System:
Android SDK Tools : 25.2.2
Node : v6.10.2
npm : 4.0.5
OS : Windows 7
唯一的解决方案是在 Ionic CLI 启动进程时在内部增加 Javascript 堆的内存大小(从 Ionic 的角度来看)。
post on Github by @timothybclayton on a similar issue under ionic-app-scripts 帮助我解决了这个问题。
但是,我不得不以完全不同的方式来做,因为我有 Nodist 作为 NodeJS 的包管理器。因此,我不得不转到 Nodist 安装目录下的 /bin
文件夹并调整 ionic.cmd
文件。
这是 ionic.cmd
文件的样子,因为它现在为 NodeJS 提供了足够的内存来执行该过程:
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" --max_old_space_size=12288 "%~dp0\node_modules\ionic\bin\ionic" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node --max_old_space_size=12288 "%~dp0\node_modules\ionic\bin\ionic" %*
)
希望这对遇到类似问题的其他人有所帮助,不仅对 Ionic,而且对使用 NodeJS 的任何其他内存密集型进程。
我将其标记为重复项,但以防万一有人在它合并之前遇到它,我在 :
上发布了针对此问题的现代解决方案As of v8.0 shipped August 2017, the NODE_OPTIONS environment variable exposes this configuration (see NODE_OPTIONS has landed in 8.x!). Per the article, only options whitelisted in the source are permitted, which includes "--max_old_space_size".
So I put in my .bashrc: export NODE_OPTIONS=--max_old_space_size=4096