firebase.analytics 不是函数

Bar*_*aba 5 javascript node.js firebase reactjs firebase-analytics

我正在尝试向现有的 Web 应用程序添加分析。我按照此处所述初始化 Firebase Analytics 。


const firebase = require('firebase');
firebase.initializeApp(config);
firebase.analytics();
Run Code Online (Sandbox Code Playgroud)

我收到这个错误 TypeError: firebase.analytics is not a function

可能是什么问题?

fat*_*han 7

您可以像这样检查和初始化Firebase Analytics v9+。您还可以将旧版本升级到较新的 SDK。

import { initializeApp } from "firebase/app";
import { getAnalytics, logEvent, isSupported } from "firebase/analytics";

// Find this config on your firebase project overview
const firebaseConfig = { ... } // your config

// Initialize Firebase
let app = null;
let analytics = null;

isSupported().then((result) => {
    if (result) {
        app = initializeApp(firebaseConfig);
        analytics = getAnalytics(app);
    }
})

// simple event
logEvent(analytics, 'your_event_name');

// firebase defined events like page_view etc.
logEvent(analytics, 'page_view', `your_event_parameter`)
Run Code Online (Sandbox Code Playgroud)

注意:我在 Docker 构建上遇到错误,这就是我logEvent这样调用的原因:

isSupported().then((result) => {
  if (result) {
    logEvent(analytics, title);
  }
})
Run Code Online (Sandbox Code Playgroud)


小智 6

首先,确保你正确初始化了firebase实例,如果你在服务器端运行它是不起作用的,然后官方提供了一个方法来检查你的环境是否支持分析,调用 ,firebase.analytics.isSupported()这是一个承诺,所以正确的方法使用它是

var firebaseConfig... // your config

var firebase.initializeApp(firebaseConfig);

firebase.analytics.isSupported().then((isSupported) => {
    if (isSupported) {
      analytics = firebase.analytics();
    }
})
Run Code Online (Sandbox Code Playgroud)


Ale*_*ejo 6

您必须导入“firebase/analytics”以获得副作用:

const firebase = require('firebase/app')
require('firebase/analytics')

firebase.initializeApp(config);
firebase.analytics();
Run Code Online (Sandbox Code Playgroud)

那对我有用


Pav*_*van 5

就我而言,这行得通。我正在使用 firebase 版本^8.1.2

import firebase from 'firebase/app';
import 'firebase/analytics';
import 'firebase/auth';

...

// Initialize Firebase
firebase.initializeApp(firebaseConfig);
firebase.analytics();
Run Code Online (Sandbox Code Playgroud)