在我的本機建置環境中,我的 webpack 配置所在的基本目錄中有一些目錄。這些目錄包含相當多的檔案(它們是屬於我們調試環境一部分的其他應用程式)。
node_modules/ src/ src/components dir1/ dir2/ webpack.config.js packages.json
我使用 exclude
來排除 dir1
和 dir2
,但這沒有幫助。如果我完全刪除這些目錄,建置就會完成。因此,似乎消耗所有記憶體的任何內容都在應用「排除」規則之前運行。請注意,我對增加節點的記憶體限制不感興趣,我認為這不是真正的問題。我不想對邏輯文件連結做一些魔術。
有什麼想法嗎?
我懷疑問題實際上出在 vue-loader 插件上,但我不能確定,因為除了轉儲之外我沒有看到任何錯誤,即使我在 webpack 中使用“verbose”標誌也是如此。
下面是我的 webpack 配置(我使用 grunt 來啟動建置)。 exclude
和 include
包含檔案(包含)或要排除(排除)的目錄的絕對路徑。我還嘗試使用正規表示式排除。
我還加入了我的package.json的相關部分
rules: [ { test: /(\.ts$|\.js$)/, exclude, include, use: [ { loader: 'ts-loader', }, ], }, { exclude, test: /\.vue$/, use: 'vue-loader' }, { exclude, test: /\.css$/, use: ['vue-style-loader', 'css-loader'] } ],
"devDependencies": { "css-loader": "^6.5.1", "@vue/compiler-sfc": "^3.2.29", "grunt": "^1.4.1", "grunt-bump": "^0.8.0", "grunt-cli": "^1.4.3", "grunt-webpack": "^5.0.0", "jsdom": "^19.0.0", "npm": "^8.3.2", "ts-loader": "^9.2.6", "typescript": "^4.5.4", "vue": "^3.2.29", "vue-loader": "^17.0.0", "vue-style-loader": "^4.1.3", "webpack": "^5.67.0" }
錯誤:
<--- Last few GCs ---> [30416:000002A93B75B4D0] 82287 ms: Mark-sweep (reduce) 4094.2 (4101.3) -> 4093.9 (4103.1) MB, 2689.3 / 0.0 ms (average mu = 0.091, current mu = 0.004) allocation failure scavenge might not succeed [30416:000002A93B75B4D0] 86891 ms: Mark-sweep (reduce) 4094.9 (4105.1) -> 4094.6 (4105.6) MB, 4588.9 / 0.0 ms (average mu = 0.037, current mu = 0.003) allocation failure scavenge might not succeed <--- JS stacktrace ---> FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 1: 00007FF7BD3E046F napi_wrap+109311
P粉1517201732024-03-26 16:51:32
要嘛檔案太多,要嘛文件太大。您唯一能做的就是嘗試使用 node
標誌 --max-old-space-size
增加記憶體配額。
在執行 Webpack 之前,使用環境變數設定記憶體選項:
// 8GB of memory NODE_OPTIONS=--max_old_space_size=8192
然後執行您的 Webpack 命令。或者,您也可以使用:
node --max-old-space-size=8192 ./node_modules/webpack/bin/webpack.js