angular / angular/angularfire

The convience observables provided by the Auth module are no longer type safe

Đang mở
#3,541 3 bình luận 1 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
7.8k
Fork
2.2k
Merge trung bình
22 giờ 28 phút
Pull request đã merge (30 ngày)
6

Mô tả

### Version info
Angular CLI: 18.0.2
Node: 22.2.0
Package Manager: npm 10.8.0
OS: linux x64

Angular: 18.0.1
... animations, common, compiler, compiler-cli, core, fire
... forms, platform-browser, platform-browser-dynamic, router

Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1800.2
@angular-devkit/build-angular 18.0.2
@angular-devkit/core 18.0.2
@angular-devkit/schematics 18.0.2
@angular/cli 18.0.2
@schematics/angular 18.0.2
rxjs 7.8.1
typescript 5.4.5
zone.js 0.14.6

### How to reproduce these conditions

**Failing test unit, Stackblitz demonstrating the problem**
n/a

**Steps to set up and reproduce**
- Create a new angular app using the latest version of the cli
`ng new angular18-firebase-test`
- Add AngularFire
`ng add @angular/fire`
- Follow the guidance [here](https://github.com/angular/angularfire/blob/master/docs/auth.md#convenience-observables) to add the convenience observables

**Sample data and security rules**
n/a

### Debug output

** Output from `firebase.database().enableLogging(true);` **
n/a

** Screenshots **
![typing-issue](https://github.com/angular/angularfire/assets/9328862/610748f5-62f6-4e9e-a485-d1ec4f19a5b5)

### Expected behavior
The convenience observables should be properly typed as they were in **v17.1.0**
Note in this screenshot how the IDE properly recognizes the types when using the previous release:
![properly-typed](https://github.com/angular/angularfire/assets/9328862/f24a193d-277e-4d71-b553-be56e46745b1)

### Actual behavior
The observables are cast as `any` (see screenshot).

_Edit 1_
Upon further investigation, it appears the problem is related to how the `rxfire/auth` module in this file is imported. Following the import through to the definition of the module takes me to a type definition file in **v17** but instead goes to an esm module in **v18**. See related screenshot here:
![imports](https://github.com/angular/angularfire/assets/9328862/6bc66bdf-2901-4389-8477-4bcab2940b61)
Still unsure why this is happening.

_Edit 2_
Eureka! It appears in [this commit](https://github.com/angular/angular-cli/commit/f452589e2c921448b76a138a5f34ba92ad05e297) the AngularCLI now defaults to setting the `moduleResolution` compiler option in the `tsconfig.json` file to `"bundler"` by default thus causing the module to get resolved differently. Switching back to the value of `"node"` allows for the proper import of typed entities but likely causes problems with the areas targeted in that aforementioned commit.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với các observable tiện ích được ghi lại trong docs/auth.md và lần theo import rxfire/auth được module Auth sử dụng. So sánh việc phân giải với moduleResolution "bundler" trong tsconfig.json của Angular CLI 18 với v17.1.0 và commit Angular CLI được liên kết; được xem là hoàn tất khi các observable vẫn giữ các kiểu mong đợi trong thiết lập hiện tại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
angular, firebase, typescript
Lĩnh vực
authentication, developer-experience
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.