node.js - webpack打包報(bào)javaScript heap out of memory,怎么解決?
問(wèn)題描述
將nodejs從5.1.1升級(jí)到6.10.2之后,執(zhí)行生產(chǎn)環(huán)境的打包(`set NODE_ENV=production && webpack --config webpack.production.config.js`),控制臺(tái)報(bào)錯(cuò):“CALL_AND_RETYR_LAST Allocation failed -javascript heap out of memoty”。(這是一張圖片,為什么上傳不了?)我nodejs版本是6.10.2, npm原本是3.10.X,后臺(tái)看在stackoverflow上看到有人說(shuō)把npm更新到最新版就能解決這個(gè)問(wèn)題,npm最后更新到4.5.0。無(wú)論是百度還是stackoverflow,我都找過(guò)解決方案(我找到了webpack.cmd,在命令行“node '%~dp0node_moduleswebpackbinwebpack.js' %* ”添加 '-max_old_space_size = 2048'參數(shù)),并且嘗試了,但是沒(méi)有用,怎么破?
問(wèn)題解答
回答1:哎,我終于自己搞定了。其實(shí),現(xiàn)在發(fā)現(xiàn)我已開(kāi)始的解決問(wèn)題的思路沒(méi)有錯(cuò),就是往node命令行里面添加 '--max_old_space_size'。錯(cuò)就錯(cuò)在,加的地方加錯(cuò)了(可能是針對(duì)我這種環(huán)境不起作用?)。一開(kāi)始我是參考了segmentfault上面一個(gè)同樣的weback打包導(dǎo)致nodejs內(nèi)存溢出的一個(gè)問(wèn)題所提供的方案來(lái)做的,就是在全局的webpack.cmd(路徑是:C:UsersAdministratorAppDataRoamingnpmwebpack.cmd)里面添加,如下圖:但是發(fā)現(xiàn)沒(méi)有起作用,執(zhí)行命令后還是內(nèi)存溢出。然后我折騰了很久,第二天上了stackoverflow上面再次搜索了一下答案,發(fā)現(xiàn)了這個(gè)答案:
于是乎,我將我生產(chǎn)環(huán)境下打包所用的npm鉤子腳本改為:“set NODE_ENV=production && node --max_old_space_size=2048 node_modules/webpack/bin/webpack.js --config webpack.production.config.js”。也就是說(shuō)我使用了局部/本地的webpack,而不是全局安裝的webpack來(lái)打包。通過(guò)給nodejs添加“--max_old_space_size=2048”來(lái)擴(kuò)大內(nèi)存為2*1024M=2G來(lái)解決了內(nèi)存溢出問(wèn)題。
證據(jù)太少,無(wú)法破案!
相關(guān)文章:
1. javascript - H5Video使用時(shí),firefox不兼容.mp4格式的視頻播放,用webm代替后,清晰度降低,怎么解決?2. java - eclipse 使用git clone項(xiàng)目時(shí)報(bào)錯(cuò),請(qǐng)問(wèn)該怎么解決?3. android - 編寫Gradle插件時(shí),想在build目錄下生成類,但是執(zhí)行task以后,無(wú)法像BuildConfig類那樣使用,請(qǐng)問(wèn)怎么解決?4. mysql - 我用SQL語(yǔ)句 更新 行的時(shí)候,發(fā)現(xiàn)全部 中文都被清空了,請(qǐng)問(wèn)怎么解決?5. python3.x - 用批處理的start命令來(lái)運(yùn)行指定Python腳本的時(shí)候,只要這個(gè)Python腳本的路徑或名字帶有中文就無(wú)法執(zhí)行,請(qǐng)問(wèn)怎么解決?6. python - 在pyqt中做微信的機(jī)器人,要在表格中顯示微信好友的名字,卻顯示不出來(lái),怎么解決?
