angular / angular/angularfire

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

Abierto
#3,488 3 comentarios 1 reacción 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
7.8k
Forks
2.2k
Merge medio
22 h 28 min
PR fusionados (30 d)
6

Descripción

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

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza leyendo docs/app-check.md y siguiendo la llamada a initializeAppCheck mostrada en @angular/fire/fesm2022/angular-fire.mjs, junto con el acceso al documento en el stack trace reportado de Firebase App Check. Se considera terminado cuando Angular SSR y el prerendering se completan sin un error de documento y App Check sigue inicializándose en el navegador.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
angular, firebase, typescript
Área
frontend, security
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.