Я знаю, что мы можем использовать 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: если мы импортируем один и тот же файл несколько раз, он запускается один раз (выполняет ли модуль ES6, выполняющий импорт, код внутри импортированного файла? )

Итак, вопрос в том, почему Firebase ведет себя так? Я имею в виду, если этот пост верен: выполняет ли модуль ES6 при импорте код внутри импортированного файла? тогда нам не нужно проверять firebase.apps.length в первую очередь, потому что он запускается один раз, независимо от того, сколько раз мы его импортируем

Вам не нужно использовать этот код для проверки инициализации Firebase. Большую часть времени люди просто инициализируют один раз в известном месте и с этого момента предполагают, что он будет доступен позже.

Если вы находитесь в ситуации, когда какой-то код может выполняться неоднократно (например, вызов функции), вы можете выполнить эту проверку, если хотите лениво инициализировать Firebase .