搜尋

首頁  >  問答  >  主體

解決vue 3建置+webpack導致JavaScript堆記憶體不足的問題

在我的本機建置環境中,我的 webpack 配置所在的基本目錄中有一些目錄。這些目錄包含相當多的檔案(它們是屬於我們調試環境一部分的其他應用程式)。

node_modules/
src/
src/components
dir1/
dir2/
webpack.config.js
packages.json

我使用 exclude 來排除 dir1dir2,但這沒有幫助。如果我完全刪除這些目錄,建置就會完成。因此,似乎消耗所有記憶體的任何內容都在應用「排除」規則之前運行。請注意,我對增加節點的記憶體限制不感興趣,我認為這不是真正的問題。我不想對邏輯文件連結做一些魔術。

有什麼想法嗎?

我懷疑問題實際上出在 vue-loader 插件上,但我不能確定,因為除了轉儲之外我沒有看到任何錯誤,即使我在 webpack 中使用“verbose”標誌也是如此。

下面是我的 webpack 配置(我使用 grunt 來啟動建置)。 excludeinclude 包含檔案(包含)或要排除(排除)的目錄的絕對路徑。我還嘗試使用正規表示式排除。

我還加入了我的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粉041881924P粉041881924241 天前467

全部回覆(1)我來回復

  • P粉151720173

    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

    回覆
    0
  • 取消回覆