错误:rxfire泛型类型'AggregateQuerySnapshot< T>'在npm安装后的Angular 构建中需要1个类型参数

bxpogfeg  于 2023-10-19  发布在  Angular
关注(0)|答案(7)|浏览(116)

在维护npm升级后,我在Angular中遇到了一个新的错误,其中没有直接依赖版本发生变化。
ng serve产生此错误,构建失败:

[ng]
[ng] Error: node_modules/rxfire/firestore/lite/interfaces.d.ts:8:29 - error TS2314: Generic type 'AggregateQuerySnapshot<T>' requires 1 type argument(s).
[ng]
[ng]  8 export type CountSnapshot = lite.AggregateQuerySnapshot<{
[ng]                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ng]  9     count: lite.AggregateField<number>;
[ng]    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ng] 10 }, any, DocumentData>;
[ng]    ~~~~~~~~~~~~~~~~~~~~~
[ng] × Failed to compile.

我该怎么办?
我已经从头开始重新安装了整个项目。包依赖项匹配angular fire指令:

"dependencies": {
    "@angular/common": "^15.2.2",
    "@angular/core": "^15.2.2",
    "@angular/fire": "^7.5.0",
    "@angular/forms": "^15.2.2",
    "@angular/platform-browser": "^15.2.2",
    "@angular/platform-browser-dynamic": "^15.2.2",
    "@angular/router": "^15.2.2",
    "@angular/service-worker": "^15.2.2",
    "firebase": "^9.17.1",
    "tslib": "^2.2.0",
    "zone.js": "~0.11.4"
  },
svgewumm

svgewumm1#

我通过强制安装rxfire版本6.0.3解决了这个问题

npm install [email protected]

我也不得不重新开始服务。

fcg9iug3

fcg9iug32#

我遇到了这个错误,并使用ng add @angular/fire安装了angular/fire
package.json:

"@angular/core": "^16.0.0",
"@angular/fire": "^7.6.1",

package.lock.json:

"firebase": "^9.8.0",
"rxfire": "^6.0.0",

在node_modules>rxfire>firestore>lite>interface.d.ts中
我改变

export type CountSnapshot = lite.AggregateQuerySnapshot<{
    count: lite.AggregateField<number>;
}, any, DocumentData>;

export type CountSnapshot = lite.AggregateQuerySnapshot<{
    count: lite.AggregateField<number>;
}>;

由于错误说它需要一种类型的参数,我只留下一种。
我不知道它是否会影响应用程序,但我不打算使用Firestore建兴。

woobm2wo

woobm2wo3#

安装最新版本的Firebase:

npm install firebase@latest
4smxwvx5

4smxwvx54#

我的项目确实有"@angular/fire": "7.6.1"作为依赖项,而不是像OP那样的firebase
但在这种情况下,它认为它会解决这两个问题,因为我从同一个原点(node_modules/rxfire/firestore/lite/interfaces.d.ts)得到了完全相同的错误。
将rxfire降级到6.0.4版对我来说不起作用。降级到版本6.0.3会导致一个新的错误,
在“tslib”中未找到“__spreadArray”

所以有两个步骤来解决(对我来说):

1.将package.json中的Firebase或@angular/fire模块分辨率覆盖到rxfire到6.0.3。我也添加了pnpm的方法,如果你使用这个。请记住根据需要将@angular/fire替换为firebase。然后用npm i重新安装所有东西。

"pnpm": {
    "overrides": {
        "@angular/fire>rxfire": "6.0.3"
    }
},
"overrides": {
    "@angular/fire": {
        "rxfire": "6.0.3"
    }
}

1.如前所述,原来的错误已经消失了,但有人抱怨在tslib中找不到某些参数。令人惊讶的是,我读了很多关于将tslib更新到最新版本的文章,但这并不起作用。具体来说,安装v2.1.0是有效的。使用--save-exact避免版本高于2.1.0。

npm i --save-exact [email protected]
ki0zmccv

ki0zmccv5#

我在使用[[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)时遇到了同样的问题,但在我手动安装特定版本[[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)时,问题得到了解决。
我采取了这些步骤:
1.从我的node_modules文件夹中删除rxfire
1.手动安装特定版本:npm i [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)
1.创建App:npm run build

rqmkfv5c

rqmkfv5c6#

我按照答案中的一些建议解决了这个问题:

  • 从node_modules中删除rxfire
  • 运行npm i [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)
  • 运行npm update(因为我安装rxfire后有新的错误)

这对我很有效

yzckvree

yzckvree7#

我得到了同样的错误以下只有最低限度的安装说明从AngularFire repository。所以我猜是窃听器。如果你只是想忽略这个问题,一个快速而肮脏的解决方案是将skipLibCheck: true添加到根目录下tslog.json文件中的compilerOptions。这会抑制错误,以便应用程序编译,但当然跳过库检查会引入其他问题,因此它不是生产就绪的解决方案。

相关问题