上一篇文章介绍了通过修改 overwrite firebase_auth_web 库的方式,实现国内使用 firebase auth 服务。
在我的使用过程中,发现国内下载 firebase js 的速度很慢,这会导致 firebase 初始化异常,无法使用 auth 服务。本文介绍如何自己部署 firebase js 文件,优化国内使用 firebase 的速度。
注意:本文介绍的并不是官方文档里的方法 ,这条路子我没走通。
1. 修改 flutterfire 中 gstatic 域名到自己的域名
上一次我们已经 fork 了 flutterfire 仓库,我们需要将所有的 gstatic 域名改为自己将要部署的域名。例如下面这个文件:
packages/firebase_core/firebase_core_web/lib/src/firebase_core_web.dart
全局搜索替换 www.gstatic.com 即可。
2. 自己部署 firebase js,并修改其中 import 地址
自行下载 firebase js 文件,例如 auth 的 www.gstatic.cn/firebasejs/…
可以看到文件最开始的 import 部分 import{_getProvider,_isFirebaseServerApp as e,_registerComponent as t,registerVersion as r,getApp as n,SDK_VERSION as i}from"https://www.gstatic.com/firebasejs/11.5.0/firebase-app.js" 中还是有官方域名 www.gstatic.com,这里也要一并修改掉。这也是为什么我们不用 gstatic.cn 而是自己部署。
如果只需要用到 auth,那应该只需要两个文件:firebase-app.js 和 firebase-auth.js。记得修改 auth.js 中的 _shouldInitProactively() 函数,使他始终返回 false(原因不明,实在不熟悉 js,没细查了)。
部署后有必要的话记得处理跨域问题。
3. overwrite firebase_core_web
上一次我们 overwrite 掉的 firebase_auth_web 这次就不需要了,改为 firebase_core_web。
dependency_overrides:
# firebase_auth_web:
# git:
# url: https://github.com/p1gd0g/flutterfire.git
# path: packages/firebase_auth/firebase_auth_web
firebase_core_web:
git:
url: https://github.com/p1gd0g/flutterfire.git
path: packages/firebase_core/firebase_core_web
4. 验证
重新打包部署 flutter 后,firebase js 文件下载正常即可。