🤗

しばらくすると直る analytics is not a function の対処方法

2020/10/29に公開

ビルドしてすぐアクセスしたときとか静的にexportしようとしたときに、なぜかanalyticsが未定義になる現象が起こっていた

if (!firebase.apps.length) {
  firebase.initializeApp(config)
  firebase.analytics()
}

TypeError: firebase__WEBPACK_IMPORTED_MODULE_0___default.a.analytics is not a function

ググっても「先頭に import 'firebase/analytics' って書いてね」とか「firebase@7.1.0以降で直ってるよ〜」とか、そうじゃなさそうな情報しかなかった
しばらくすると動くんだからサァ…

で、
firebaseのonReady的なものがないか探していたら、あった

if (!firebase.apps.length) {
  firebase.initializeApp(config)
  firebase.analytics.isSupported().then((isSupported) => {
    if (isSupported) {
      firebase.analytics()
    }
  })
}

たぶん本来はエンジンが本当にブラウザかどうかを調べる関数なのだが、
analyticsがサポートされているのに未定義になることはないだろうし良さそう

GitHubで編集を提案

Discussion