问题
我最近升级了我的角度应用程序。我目前使用的是角12,Firebase 9和AngularFire 7 根据AngualrFire文档中的建议
ng --version
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1202.13
@angular-devkit/build-angular 12.2.13
@angular-devkit/core 12.2.13
@angular-devkit/schematics 12.2.13
@angular/cdk 12.2.12
@angular/fire 7.1.1
@angular/flex-layout 10.0.0-beta.32
@angular/material 12.2.12
@schematics/angular 12.2.13
rxjs 6.6.7
typescript 4.3.5我的代码中有多个版本的RxJS存在问题。例如,当尝试使用AngularFire查询实时数据库时:
import { take } from 'rxjs/operators';
...
this.users$ = this.userKey$.pipe(
switchMap(userKey =>
db.list('/users', ref =>
userKey ? ref.orderByChild('key').equalTo(userKey) : ref
).snapshotChanges().pipe(take(1))
)
);返回错误:
error TS2345: Argument of type 'MonoTypeOperatorFunction<SnapshotAction<unknown>[]>' is not assignable
to parameter of type 'OperatorFunction<SnapshotAction<unknown>[], unknown>'.
).snapshotChanges().pipe(take(1))
~~~~~~~故障排除
我可以通过从node_modules of AngularFire导入node_modules运算符来修复这个问题。但这是一个问题,因为我需要使用根node_modules文件夹中的rxjs安装。
import { take } from '@angular/fire/node_modules/rxjs/operators';我遇到了安装在我的项目中的两个不同版本的RxJS。运行npm list rxjs会给我这样的结果:
vex@11.0.0 /Users/timothydenning/code/lost-creekV2
├─┬ @angular-devkit/architect@0.1202.13
│ └── rxjs@6.6.7
├─┬ @angular-devkit/build-angular@12.2.13
│ ├─┬ @angular-devkit/build-webpack@0.1202.13
│ │ └── rxjs@6.6.7
│ ├─┬ inquirer@8.1.2
│ │ └── rxjs@7.4.0
│ └── rxjs@6.6.7
├─┬ @angular-devkit/core@12.2.13
│ └── rxjs@6.6.7
├─┬ @angular/cli@12.2.13
│ ├─┬ @angular-devkit/schematics@12.2.13
│ │ └── rxjs@6.6.7
│ └─┬ inquirer@8.1.2
│ └── rxjs@7.4.0
├─┬ @angular/fire@7.1.1
│ └─┬ inquirer@8.2.0
│ └── rxjs@7.4.0
├─┬ codelyzer@6.0.2
│ └── rxjs@6.6.7
├─┬ firebase-tools@8.20.0
│ └─┬ inquirer@6.3.1
│ └── rxjs@6.6.7
├─┬ inquirer@6.5.2
│ └── rxjs@6.6.7
├─┬ inquirer-autocomplete-prompt@1.4.0
│ └── rxjs@6.6.7
└── rxjs@6.6.7 这告诉我,从‘RxJS /操作符’的导入来自RxJS v6.6.7。而从‘@ RxJS /fire/node_modules/RxJS/操作符’的导入来自于v7.4.0。
我的问题
如何从项目中删除rxjs@7.4.0并只保留rxjs@6.6.7
我尝试过各种各样的东西,比如:
npm uninstall rxjs@7npm install。@角/火7具有RxJ6和7的对等依赖关系,所以我应该可以同时使用它们,对吗?
@angular/fire/package.json
"peerDependencies": {
...
"rxjs": "~6.6.0 || ^7.0.0",
...
},发布于 2021-11-21 03:07:04
您必须指定版本
npm i --save rxjs@6.6.0https://stackoverflow.com/questions/69897437
复制相似问题