Using with Angular 17 SSR -> document is not defined on initializeAppCheck
- Vorherrschende Sprache
- TypeScript
- Sterne
- 7.8k
- Forks
- 2.2k
- Ø Merge
- 22 Std. 28 Min.
- Gemergte PRs (30 T.)
- 6
Beschreibung
### 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
Beitragsleitfaden
Rechercherichtung
Beginne damit, docs/app-check.md zu lesen und den in @angular/fire/fesm2022/angular-fire.mjs gezeigten Aufruf von initializeAppCheck nachzuverfolgen, zusammen mit dem Dokumentzugriff im gemeldeten Firebase App Check-Stacktrace. Als erledigt gilt die Aufgabe, wenn Angular SSR und das Prerendering ohne einen Dokumentfehler abgeschlossen werden und App Check im Browser weiterhin initialisiert wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- angular, firebase, typescript
- Bereich
- frontend, security
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100