webpack打包、編譯、熱更新Node內(nèi)存不足問題解決
日常先上結(jié)論
- 上班的打工開發(fā)可以直接在這里看解決方案
- 修復(fù)young object promotion failed Allocation failed - JavaScript heap out of memory報(bào)錯(cuò),全局安裝increase-memory-limit這個(gè)包就可以解決,安裝完后在項(xiàng)目控制臺(tái)執(zhí)行increase-memory-limit,然后再運(yùn)行項(xiàng)目就完事啦,如果遇到其他報(bào)錯(cuò),可以直接看下面第2項(xiàng)解決方案。
- 所有Webpack編譯、打包、熱更新等等問題,只要是遇到上述報(bào)錯(cuò)都可以用這個(gè)解決
問題背景
最近接手一個(gè)公司買過來的項(xiàng)目(燙手山芋),項(xiàng)目規(guī)模比常規(guī)后臺(tái)管理項(xiàng)目稍大一點(diǎn)。剛接手一頓操作npm i, npm run dev,安裝依賴,運(yùn)行項(xiàng)目,沒有任何問題。這時(shí)候我還稍微放松了一點(diǎn),心想好像這項(xiàng)目還沒什么坑。但是當(dāng)我瀏覽系統(tǒng)、熟悉業(yè)務(wù)時(shí)出現(xiàn)了BUG,于是回到代碼打個(gè)console.log調(diào)試一下,常規(guī)操作,小問題。剛ctrl+s保存切到頁面想看報(bào)錯(cuò)信息發(fā)現(xiàn)頁面已經(jīng)蹦了,眉頭一皺,感覺不對(duì),console.log也能讓頁面蹦了嗎?切回vscode就看到控制臺(tái)紅紅的大字,webpack-dev-serve也蹦了。我又開始懷疑這項(xiàng)目了,console.log也能讓項(xiàng)目崩潰,還能玩嗎?買的別人公司的項(xiàng)目果然有坑。
報(bào)錯(cuò)信息:FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory
排查問題
往上看控制臺(tái)報(bào)錯(cuò)信息,看到JS stacktrace、JavaScript heap out of memory,意識(shí)到應(yīng)該是內(nèi)存不夠了

PS:young object promotion failed Allocation failed - JavaScript heap out of memory
這句話的意思是JavaScript在將新生區(qū)對(duì)象提升至老生區(qū)的時(shí)候出錯(cuò)了 - 原因是JavaScript堆內(nèi)存不夠,
這里是V8對(duì)GC的優(yōu)化,將堆劃分為新生區(qū)和老生區(qū),新生區(qū)就是創(chuàng)建不久的對(duì)象唄,老生區(qū)就是已經(jīng)存在一段時(shí)間的對(duì)象,將堆空間劃分為新生老生兩個(gè)區(qū)是為了減少老生區(qū)的GC次數(shù),畢竟GC也會(huì)影響程序運(yùn)行,要盡量減少。具體可以自行百度V8 GC優(yōu)化策略。
打開任務(wù)控制臺(tái),看內(nèi)存占用還有剩余呀。那不是電腦內(nèi)存不夠,那就是Node可調(diào)用的系統(tǒng)內(nèi)存不夠用了

打開百度一搜Node可調(diào)用系統(tǒng)內(nèi)存有多少,果然出來Node基于V8引擎,V8在64位系統(tǒng)最大內(nèi)存為1.4G左右,而在32位系統(tǒng)只有0.7G左右

既然知道了問題所在,那么就好解決了,面向百度編程,百度搜索如何解決Node運(yùn)行內(nèi)存不足的問題馬上就有了解決辦法,increase-memory-limit可以提高Node占用內(nèi)存。npm i -g increase-memory-limit安裝包,然后在項(xiàng)目目錄執(zhí)行increase-memory-limit,執(zhí)行成功
再執(zhí)行npm run dev又來了一個(gè)報(bào)錯(cuò),果然程序是一種修復(fù)一個(gè)BUG要再修復(fù)其他十幾個(gè)BUG的東西,可以按如下操作解決問題,執(zhí)行的時(shí)候多了一個(gè)""系統(tǒng)識(shí)別不了,去掉就可以了



總結(jié)
到此這篇關(guān)于webpack打包、編譯、熱更新Node內(nèi)存不足問題解決的文章就介紹到這了,更多相關(guān)webpack打包編譯熱更新Node內(nèi)存不足內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nodejs控制臺(tái)打印高亮代碼的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于nodejs控制臺(tái)打印高亮代碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
nodejs 實(shí)現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互的過程
這篇文章主要介紹了nodejs 實(shí)現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互的過程,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11
koa+jwt實(shí)現(xiàn)token驗(yàn)證與刷新功能
這篇文章主要介紹了koa+jwt實(shí)現(xiàn)token驗(yàn)證與刷新功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Windows 系統(tǒng)下安裝和部署Egret的開發(fā)環(huán)境
Egret基于TypeScript開發(fā)的,而TypeScript編譯工具tsc是基于Node.js 開發(fā)的。所以在安裝過程中,我們先需要對(duì)于基礎(chǔ)支持工具進(jìn)行安裝。2014-07-07
Windows環(huán)境下npm install 報(bào)錯(cuò): operation not permitted, rename的解決
這篇文章主要介紹了Windows環(huán)境下npm install 報(bào)錯(cuò): operation not permitted, rename的解決方法,文中對(duì)解決的方法介紹的很詳細(xì),有需要的朋友們可以參考借鑒。2016-09-09

