运行带有--release
和--prod
标志的Ionic应用程序构建时出现内存不足问题。不幸的是,当它接缝时,允许Node使用的内存空间不足以进行该过程并且它产生以下错误(可能在没有可用于执行操作的内存块之后):
正如this回答中所建议的,我尝试在构建命令之前利用max_old_space_size
package.json
脚本中的start
标志无效。主要是因为节点进程在设置标志后由Ionic CLI方式内部运行。
我还尝试按照this回答中的建议重新安装具有更大堆大小的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
答案 0 :(得分:3)
唯一的解决方案是在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的内存密集型进程。
答案 1 :(得分:0)
我将此标记为重复,但如果在合并之前发生任何事情,我会在https://stackoverflow.com/a/48895989/4200039发布现代解决方案:
自2017年8月发布的v8.0起,NODE_OPTIONS环境变量公开此配置(请参阅NODE_OPTIONS已落在8.x!中)。根据文章,只允许在源中列入白名单的选项,其中包括&#34; - max_old_space_size&#34;。
所以我放入了我的.bashrc: export NODE_OPTIONS = - max_old_space_size = 4096