I am trying to upgrade my Angular 9 app to Angular 10 version, but getting below warning after the upgrade
WARNING in calendar.reducer.ts depends on lodash/keys. CommonJS or AMD dependencies can cause optimization bailouts.
I have added below line to my angular.json
file but issue is not resolved
"allowedCommonJsDependencies": ["lodash"]
How can I fix above issue.
The npm package lodash
itself is not an ECMAScript module and therefore produces the warning.
There are multiple ways to fix this:
Some libraries offer ES modulized builds. In case of lodash
, you can replace it with lodash-es.
Run npm install --save lodash-es
.
Now replace all imports from lodash
with lodash-es
.
Also make sure to import the library with ES import statements:
import { keys } from 'lodash-es';
If there is no ES modulized build available for your library, or if you for some reason don't care, you can add can allow specific CommonJS dependencies in the angular.json
file:
"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 passlodash
, the sub-paths (e.g.lodash/keys
) will also be allowed.