我知道我们可以使用firebase.apps.length来检查Firebase是否已启动。
例如:
import firebase from 'firebase';
if (!firebase.apps.length) {
firebase.initializeApp({});
}
export default firebase;
https://github.com/zeit/next.js/issues/1999
但是,我在StackOverflow上读到另一个问题,如果我们多次导入同一文件,它只会运行一次(Does ES6 module importing execute the code inside the imported file?)
所以问题是为什么Firebase会那样表现?我的意思是,如果这篇文章是正确的:Does ES6 module importing execute the code inside the imported file?,那么我们不需要首先检查firebase.apps.length,因为无论导入多少次它都只会运行一次
您不必使用该代码来检查Firebase是否已初始化。大多数时候,人们只在已知的位置进行一次初始化,然后从那时起就假定它将稍后可用。
如果您处于某些代码可能重复运行的情况下(例如函数调用),那么您可能需要执行此检查如果您要懒惰地初始化Firebase。