angular / angular/angularfire

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

未關閉
#3,488 3 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
TypeScript
星號
7.8k
分支
2.2k
平均合併
22 小時 28 分鐘
30 天內合併 PR
6

描述

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

貢獻指南

開啟貢獻指南

研究方向

先閱讀 docs/app-check.md,並追蹤 @angular/fire/fesm2022/angular-fire.mjs 中顯示的 initializeAppCheck 呼叫,同時檢查回報的 Firebase App Check 堆疊追蹤中的 document 存取。完成的標準是 Angular SSR 和預先渲染能在沒有 document 錯誤的情況下完成,同時瀏覽器中的 App Check 繼續初始化。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
angular, firebase, typescript
領域
frontend, security
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。