Firebase SDK V9自动配置/_/Firebase/init.js



移动到模块化SDK后,V9自动配置不再使用/__/firebase/init.js。这是预期的,因为init.js包含旧的初始化模式
遗憾的是,文档和迁移指南中都没有提到如何在V9中进行自动配置。

您可以在运行时获取/__/firebase/init.json,但必须将initializeApp(firebaseConfig)作为一个promise或顶级等待处理,这在工具中还没有得到很好的支持。

import { initializeApp } from 'firebase/app';
const response = await fetch('/__/firebase/init.json');
const firebaseApp = initializeApp(await response.json());

这是一个破解,但你也可以用/__/firebase/init.js解决这个问题。

<script>
// Capture the config object from /__/firebase/init.js
window.firebase = {
initializeApp: (config) => {
window.firebaseConfig = config;
// Delete fake Firebase global
delete window.firebase;
},
};
</script>
<script src="/__/firebase/init.js"></script>
<script type="module">
import { initializeApp } from 'firebase/app';

const firebaseConfig = window.firebaseConfig;
if (!firebaseConfig) {
throw new Error('window.firebaseConfig is not defined');
}
const firebaseApp = initializeApp(firebaseConfig);
</script>

目前,V9 SDK只能使用显式配置片段(您可以从Firebase控制台和站点的__/firebase/init.json获取(。

不幸的是,由于__/firebase/init.js__/firebase/init.json是由Firebase Hosting在运行时提供的,因此它与树抖动并不兼容(这是模块化SDK的主要原因(。

最新更新