angular / angular/angularfire

Using with Angular 17 SSR -> document is not defined on initializeAppCheck

Aperta
#3,488 3 commenti 1 reazione 0 assegnatari Vedi su GitHub
Lingua principale
TypeScript
Stelle
7.8k
Fork
2.2k
Merge medio
22h 28m
PR unite (30g)
6

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia leggendo docs/app-check.md e seguendo la chiamata a initializeAppCheck mostrata in @angular/fire/fesm2022/angular-fire.mjs, insieme all’accesso al documento nello stack trace segnalato di Firebase App Check. Il lavoro è completato quando Angular SSR e il prerendering terminano senza un errore relativo al documento e App Check continua a inizializzarsi nel browser.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
angular, firebase, typescript
Ambito
frontend, security
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.