javascript - Angular 10 升级 - 修复 CommonJS 或 AMD 依赖项可能导致优化救助

标签 javascript angular angular10 angular-upgrade

我正在尝试将我的 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"]
我该如何解决上述问题。

最佳答案

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"]
    }
  }
}

Since Angular CLI Version 10.0.1 you can use globs in allowedCommonJsDependencies. This means that if you pass lodash, the sub-paths (e.g. lodash/keys) will also be allowed.


文档引用:https://angular.io/guide/build#configuring-commonjs-dependencies

关于javascript - Angular 10 升级 - 修复 CommonJS 或 AMD 依赖项可能导致优化救助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62589229/

相关文章:

angular - 为什么 ngOnChanges 需要时间。是异步的吗?

javascript - 多个根处理程序的目的是什么?

javascript - Angular 8 无法让子面板正确滚动到屏幕顶部

angular - 找不到模块 '@angular/platform/browser'

angular - 如何正确检查用户是否在 Angular4 中经过身份验证?

angular - 如何在 Monaco Editor 中突出显示特定文本

docker - 使用用户注册表动态生成子域

Javascript - 如果日期时间过期则突出显示红色

javascript - 窗口准备好后如何打开物化模式?

Angular - Primeng CommonJS 或 AMD 依赖可能导致优化救助