webpack打包、編譯、熱更新Node內(nèi)存不足問題解決
日常先上結(jié)論
- 上班的打工開發(fā)可以直接在這里看解決方案
- 修復(fù)young object promotion failed Allocation failed - JavaScript heap out of memory報錯,全局安裝increase-memory-limit這個包就可以解決,安裝完后在項目控制臺執(zhí)行increase-memory-limit,然后再運行項目就完事啦,如果遇到其他報錯,可以直接看下面第2項解決方案。
- 所有Webpack編譯、打包、熱更新等等問題,只要是遇到上述報錯都可以用這個解決
問題背景
最近接手一個公司買過來的項目(燙手山芋),項目規(guī)模比常規(guī)后臺管理項目稍大一點。剛接手一頓操作npm i, npm run dev,安裝依賴,運行項目,沒有任何問題。這時候我還稍微放松了一點,心想好像這項目還沒什么坑。但是當(dāng)我瀏覽系統(tǒng)、熟悉業(yè)務(wù)時出現(xiàn)了BUG,于是回到代碼打個console.log調(diào)試一下,常規(guī)操作,小問題。剛ctrl+s保存切到頁面想看報錯信息發(fā)現(xiàn)頁面已經(jīng)蹦了,眉頭一皺,感覺不對,console.log也能讓頁面蹦了嗎?切回vscode就看到控制臺紅紅的大字,webpack-dev-serve也蹦了。我又開始懷疑這項目了,console.log也能讓項目崩潰,還能玩嗎?買的別人公司的項目果然有坑。
報錯信息:FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory
排查問題
往上看控制臺報錯信息,看到JS stacktrace、JavaScript heap out of memory,意識到應(yīng)該是內(nèi)存不夠了
PS:young object promotion failed Allocation failed - JavaScript heap out of memory
這句話的意思是JavaScript在將新生區(qū)對象提升至老生區(qū)的時候出錯了 - 原因是JavaScript堆內(nèi)存不夠,
這里是V8對GC的優(yōu)化,將堆劃分為新生區(qū)和老生區(qū),新生區(qū)就是創(chuàng)建不久的對象唄,老生區(qū)就是已經(jīng)存在一段時間的對象,將堆空間劃分為新生老生兩個區(qū)是為了減少老生區(qū)的GC次數(shù),畢竟GC也會影響程序運行,要盡量減少。具體可以自行百度V8 GC優(yōu)化策略。
打開任務(wù)控制臺,看內(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運行內(nèi)存不足的問題馬上就有了解決辦法,increase-memory-limit可以提高Node占用內(nèi)存。npm i -g increase-memory-limit
安裝包,然后在項目目錄執(zhí)行increase-memory-limit
,執(zhí)行成功
再執(zhí)行npm run dev又來了一個報錯,果然程序是一種修復(fù)一個BUG要再修復(fù)其他十幾個BUG的東西,可以按如下操作解決問題,執(zhí)行的時候多了一個""系統(tǒng)識別不了,去掉就可以了
總結(jié)
到此這篇關(guān)于webpack打包、編譯、熱更新Node內(nèi)存不足問題解決的文章就介紹到這了,更多相關(guān)webpack打包編譯熱更新Node內(nèi)存不足內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nodejs轉(zhuǎn)換音頻文件格式并壓縮導(dǎo)出zip格式(vscode語音插件開發(fā))
FFmpeg是一套開源的音視頻處理工具,通俗地講,可以對音視頻文件進(jìn)行剪切、拼接、水印、轉(zhuǎn)碼等處理,這篇文章主要介紹了nodejs轉(zhuǎn)換音頻文件格式并壓縮導(dǎo)出zip格式(vscode語音插件開發(fā)),需要的朋友可以參考下2023-05-05用node-webkit把web應(yīng)用打包成桌面應(yīng)用(windows環(huán)境)
這篇文章主要介紹了windows環(huán)境下用node-webkit把web應(yīng)用打包成桌面應(yīng)用的教程,需要的朋友可以參考下2018-02-02node-red教程之dashboard簡介與輸入型儀表板控件的使用
Node-red支持自定義節(jié)點,當(dāng)然也就支持自定義圖形化的節(jié)點。也有優(yōu)秀的開發(fā)者把自己建立的圖形化節(jié)點無償分享。這里給出一個股票界面的例子,讓大家看一看優(yōu)秀的node-red界面能做到什么樣子2022-01-01用nodeJS搭建本地文件服務(wù)器的幾種方法小結(jié)
本篇文章主要介紹了用nodeJS搭建本地文件服務(wù)器的幾種方法小結(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03使用Node.js搭建靜態(tài)資源服務(wù)詳細(xì)教程
這篇文章主要介紹了使用Node.js搭建靜態(tài)資源服務(wù)器,需要的朋友可以參考下2017-08-08