Angular 13升级遇CommonJS/AMD依赖优化警告,求解决方案
解决方案
1. 升级RxJS并移除兼容包
Angular 13要求RxJS 7.x版本,rxjs-compat是为兼容RxJS 5写法存在的冗余依赖,会引入CommonJS模块导致警告。执行以下命令更新依赖:
npm uninstall rxjs-compat npm install rxjs@^7.4.0 --save
2. 统一RxJS导入方式
将旧的分散式导入替换为RxJS 6+标准的集中导入,避免加载CommonJS格式的子模块:
旧导入代码:
import { Observable } from 'rxjs/Observable'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; import { map } from 'rxjs/operators/map'; import { tap } from 'rxjs/operators/tap'; import { catchError, retry, delay } from 'rxjs/operators'; import 'rxjs/add/operator/catch'; import 'rxjs/add/observable/throw';
新导入代码:
import { Observable, BehaviorSubject, throwError } from 'rxjs'; import { map, tap, catchError, retry, delay } from 'rxjs/operators';
3. 替换旧操作符调用逻辑
原来基于原型链扩展的操作符调用(如.catch())要改为RxJS 6+的管道(pipe)调用方式,同时替换Observable.throw()为throwError():
旧写法示例:
// 原型链扩展调用 someObservable .map(data => data.value) .catch(err => Observable.throw(err));
新写法示例:
// pipe链式调用 someObservable .pipe( map(data => data.value), catchError(err => throwError(() => err)) );
4. 验证修复
执行构建命令检查警告是否消失:
ng build
完成后,CommonJS/AMD依赖警告会被消除,同时打包体积因移除冗余依赖和使用ES模块优化而减小。
内容的提问来源于stack exchange,提问作者SilverFish
相关产品推荐
相关产品推荐

