97

我正在尝试将我的 Angular 9 应用程序升级到 Angular 10 版本,但升级后收到低于警告

WARNING in calendar.reducer.ts depends on lodash/keys. CommonJS or AMD dependencies can cause optimization bailouts.

我已将以下行添加到我的angular.json文件中,但问题未解决

"allowedCommonJsDependencies": ["lodash"]

我该如何解决上述问题。

4

1 回答 1

161

npm 包lodash本身不是 ECMAScript 模块,因此会产生警告。有多种方法可以解决此问题:

替换为 ES 模块化库(推荐)

一些库提供 ES 模块化构建。如果是lodash,您可以将其替换为lodash-es

运行npm install --save lodash-es

lodash现在用替换所有导入lodash-es

还要确保使用 ES import 语句导入库:

import { keys } from 'lodash-es';

将 CommonJS 依赖列入白名单

如果您的库没有可用的 ES 模块化构建,或者您出于某种原因不关心,则可以在angular.json文件中允许特定的 CommonJS 依赖项:

"architect": {
  "build": {
    "builder": "@angular-devkit/build-angular:browser",
    "options": {
      "allowedCommonJsDependencies": ["lodash"]
    }
  }
}

从 Angular CLI 版本 10.0.1 开始,您可以在allowedCommonJsDependencies. 这意味着如果您通过lodash,子路径(例如lodash/keys)也将被允许。

文档参考:https ://angular.io/guide/build#configuring-commonjs-dependencies

于 2020-06-26T06:33:59.697 回答