-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The convience observables provided by the Auth module are no longer type safe #3541
Comments
…or new projects The `bundler` TypeScript resolution mode is now the default for all newly created Angular CLI projects. This mode allows TypeScript to read and use any package.json `exports` and `imports` fields found within packages including the Angular workspace. Unlike the `node16` option value, this value does not require the use of file extensions for each import and does not require modification of all existing application code to use. The TypeScript language service also benefits from this option by allowing import auto-discovery to leverage any `exports` defined for a package. This is particularly useful for packages such as `@angular/material` which makes extensive use of secondary package exports. Additional information regarding this resolution mode can be found here: https://www.typescriptlang.org/tsconfig#moduleResolution
This appears to be an issue with the Package.json from the published package: https://unpkg.com/browse/[email protected]/package.json |
Nice @clydin! Looking into it, rxfire already has the appropriate updates to @jamesdaniels I'm assuming once there is a new release of rxfire we can update the dep in AngularFire and hopefully this will be resolved, no? |
A temporary fix is to use the below in your tsconfig.json "moduleResolution": "node", once the fix has been published you can revert back to "moduleResolution": "bundler", |
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
ng new angular18-firebase-test
ng add @angular/fire
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 the AngularCLI now defaults to setting the
moduleResolution
compiler option in thetsconfig.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.The text was updated successfully, but these errors were encountered: