報錯信息很直觀地指出是內(nèi)存溢出了。是什么導(dǎo)致了內(nèi)存溢出呢怎茫?其根本原因在于 nodejs 默認(rèn)限制了最大可使用的內(nèi)存大小诊杆。
nodejs V8 引擎在 64 位機(jī)器上默認(rèn)限制使用內(nèi)存最大不超過 1.7GB,超過這個限制官方建議嘗試優(yōu)化為多線程方式氓拼。
解決辦法可以是增加 nodejs 可使用的最大內(nèi)存大小你画,也可以從降低程序內(nèi)存消耗的角度入手。
解決辦法一: 設(shè)置 nodejs 配置項 配置項
max_old_space_size
如果希望超越 V8 引擎默認(rèn)的內(nèi)存大小限制桃漾,可以通過設(shè)置配置項 max_old_space_size
來解決坏匪。
- 方法一:設(shè)置環(huán)境變量
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",
}
}
解決辦法二:項目構(gòu)建流程關(guān)閉 sourcemap 生成
以 Angular 為例撬统,對于越來越龐大的 Angular 項目适滓,Angular 編譯時間、內(nèi)存消耗也越來越長恋追,其中 sourceMap
的生成占據(jù)了絕大部分的時間凭迹。
在開發(fā)過程中可以關(guān)閉 sourceMap
的生成,加快編譯構(gòu)建的速度苦囱。方法為在 angular.json
中設(shè)置 build.options.sourceMap
的值為 false
嗅绸,同時在 tsconfig.json
中設(shè)置 compilerOptions.sourceMap
的值為 false
。