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