WEBPACK 弃用数组以使用 web pack 5 在 angular 11 中设置警告

问题描述

我将我的应用从 angular 10 迁移到了 11,并使用以下命令更新到了 webpack 5:

      "resolutions": {
        "webpack": "^5.0.0"
      }

当我构建/服务时,我收到以下警告 =

(node:3926) [DEP_WEBPACK_DEPRECATION_ARRAY_TO_SET_INDEXER] DeprecationWarning: chunk.files was changed from Array to Set (indexing Array is deprecated)
(Use `node --trace-deprecation ...` to show where the warning was created)

知道我该怎么做吗?用集合替换所有数组?我可以将这个node --trace-deprecation 放在我的应用程序中的什么位置以了解导致此问题的文件

谢谢。

更新

我在构建过程中添加了 --trace-deprecation 并得到以下日志:

(node:12987) [DEP_WEBPACK_DEPRECATION_ARRAY_TO_SET_INDEXER] DeprecationWarning: chunk.files was changed from Array to Set (indexing Array is deprecated)
    at Set.fn (/Users/xxxxx/node_modules/webpack/lib/util/deprecation.js:128:4)
    at xxx/node_modules/@angular-devkit/build-angular/src/webpack/plugins/analytics.js:173:57
    at Array.forEach (<anonymous>)
    at NgBuildAnalyticsPlugin._collectBundleStats (/xxxx/node_modules/@angular-devkit/build-angular/src/webpack/plugins/analytics.js:172:14)
    at NgBuildAnalyticsPlugin._done (/xxx/node_modules/@angular-devkit/build-angular/src/webpack/plugins/analytics.js:242:14)
    at Hook.eval [as callAsync] (eval at create (/xxx/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:14:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/xxx/node_modules/tapable/lib/Hook.js:18:14)
    at /xxx/node_modules/webpack/lib/Compiler.js:468:23
    at Compiler.emitRecords (/xxx/node_modules/webpack/lib/Compiler.js:846:39)
    at /xxx/node_modules/webpack/lib/Compiler.js:460:11

解决方法

目前,带有 Webpack 5 的 Angular 11 仍处于试验阶段,并且仅与前面提到的 Yarn 一起使用 here。因此,您可能会在这里和那里看到一些警告和错误。我认为现在最好避免使用它进行生产构建。

很可能它会被 Angular 12 正式支持。你可以看到 here @angular-devkit/build-optimizer 库将在 12 版中支持 Webpack 5。