The convience observables provided by the Auth module are no longer type safe
- Vorherrschende Sprache
- TypeScript
- Sterne
- 7.8k
- Forks
- 2.2k
- Ø Merge
- 22 Std. 28 Min.
- Gemergte PRs (30 T.)
- 6
Beschreibung
### 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 **

### 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:

### 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:

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.
Beitragsleitfaden
Rechercherichtung
Beginne mit den in docs/auth.md dokumentierten Convenience-Observables und verfolge den vom Auth-Modul verwendeten rxfire/auth-Import. Vergleiche die Auflösung unter Angular CLI 18s tsconfig.json moduleResolution "bundler" mit v17.1.0 und dem verknüpften Angular CLI-Commit; abgeschlossen ist die Aufgabe, wenn die Observables unter dem aktuellen Setup ihre erwarteten Typen beibehalten.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- angular, firebase, typescript
- Bereich
- authentication, developer-experience
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100