Using with Angular 17 SSR -> document is not defined on initializeAppCheck
- Langage dominant
- TypeScript
- Étoiles
- 7.8k
- Forks
- 2.2k
- Merge moyen
- 22 h 28 min
- PR mergées (30 j)
- 6
Description
### Version info
**Angular:**
17.0.8
**Firebase:**
10.7.1
**AngularFire:**
17.0.0
**Other (e.g. Ionic/Cordova, Node, browser, operating system):**
Node 18, Ionic 7, MacOS
### How to reproduce these conditions
**Steps to set up and reproduce**
1. New Angular 17 project
2. `ng add @angular/fire@17`
3. `ng add @angular/ssr`
4. Set up App Check as per https://github.com/angular/angularfire/blob/master/docs/app-check.md
5. `ng build`
### Debug output
```
⠇ Building...
ReferenceError: document is not defined
at makeDiv (/app/.angular/prerender-root/node_modules/@firebase/app-check/dist/esm/index.esm2017.js:1119:26)
at initializeV3 (/app/.angular/prerender-root/node_modules/@firebase/app-check/dist/esm/index.esm2017.js:1064:19)
at _ReCaptchaV3Provider.initialize (/app/.angular/prerender-root/node_modules/@firebase/app-check/dist/esm/index.esm2017.js:1255:9)
at _activate (/app/.angular/prerender-root/node_modules/@firebase/app-check/dist/esm/index.esm2017.js:1543:20)
at initializeAppCheck (/app/.angular/prerender-root/node_modules/@firebase/app-check/dist/esm/index.esm2017.js:1498:5)
at (app/.angular/prerender-root/c56c3be0-e454-4b23-bf7d-d028ecf276ec/node_modules/@angular/fire/fesm2022/angular-fire.mjs:216:44)
at (/app/.angular/prerender-root/c56c3be0-e454-4b23-bf7d-d028ecf276ec/node_modules/@angular/fire/fesm2022/angular-fire.mjs:148:57)
at _ZoneDelegate.invoke (/app/.angular/prerender-root/node_modules/zone.js/fesm2015/zone.js:368:26)
at _Zone.run (/app/.angular/prerender-root/node_modules/zone.js/fesm2015/zone.js:129:43)
at _NgZone.runOutsideAngular (/app/.angular/prerender-root/node_modules/@angular/core/fesm2022/core.mjs:1461
An unhandled exception occurred: document is not defined
```
### Expected behavior
AngularFire should check if rendering on a browser before calling App Check code and RecaptchaV3 (which relies on `document` being available)
### Actual behavior
No check is done, so when providing App Check, this above error occurs as soon as pre-rendering on the server happens and `document` is accessed but isn't available due to not running in a browser
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par lire docs/app-check.md et retracer l’appel à initializeAppCheck montré dans @angular/fire/fesm2022/angular-fire.mjs, ainsi que l’accès au document dans la trace de pile signalée de Firebase App Check. C’est terminé lorsque Angular SSR et le pré-rendu s’achèvent sans erreur de document et qu’App Check continue de s’initialiser dans le navigateur.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- angular, firebase, typescript
- Domaine
- frontend, security
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100