[flutter web] 自行部署 firebase js,优化国内使用体验

352 阅读1分钟

上一篇文章介绍了通过修改 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 文件下载正常即可。