Ошибка типа: (0, _analytics.analytics) не является функцией) google analytics react native

#react-native

#реагировать-родной

Вопрос:

В приложении react native я использую firebase Google Analytics.

Проблема заключается в отслеживании экранов, я перехожу по этой ссылке, однако у меня возникает эта ошибка.

TypeError: (0 , _analytics.analytics) is not a function).

И скриншот.

Мой файл appcontainer (drawer.js ) :

 import { createDrawerNavigator } from 'react-navigation-drawer';
import { createAppContainer } from 'react-navigation';
import Feed  from '../components/Home';
import {FeedStack}  from './stack';
import React, { Component } from 'react';
import  {analytics }from '@react-native-firebase/analytics';

const MyDrawerNavigator = createDrawerNavigator(
 {
   Feed: FeedStack
 },
);

function getActiveRouteName(navigationState) {
     if (!navigationState) {
       return null;
     }
     const route = navigationState.routes[navigationState.index];

     if (route.routes) {
       return getActiveRouteName(route);
     }
     return route.routeName;
 }

const AppContainer =createAppContainer(MyDrawerNavigator);
export default () => {
    return <AppContainer
        onNavigationStateChange={(prevState, currentState, action) => {
            const currentRouteName = getActiveRouteName(currentState);
            const previousRouteName = getActiveRouteName(prevState);

            if (previousRouteName !== currentRouteName) {
      analytics().setCurrentScreen(currentRouteName, currentRouteName);
            }
          }}
    />
}

 

Мой app.js :

 
import Feed from './src/components/Home';
import HomePage from './src/components/homeEpaper';
import Navigator from './src/navigator/drawer';

import React, { Component } from 'react';


export default function App() {

    return (

      <Navigator />
    )

}

 

Я попытался также импортировать аналитику из «@react-native-firebase / analytics»;
и я получил эту ошибку. скриншот

Ответ №1:

если вы используете setCurrentScreen метод, то вам необходимо использовать следующее

package.jsom

 "@react-native-firebase/analytics": "^10.4.0",
"@react-native-firebase/app": "^10.4.0",
 

Неверно

 import analytics from '@react-native-firebase/analytics';
.
.
.
analytics().setCurrentScreen('SignUpScreen');`
 

Правильно

 import analytics from '@react-native-firebase/analytics';
.
.
.
// Google Firebase Analytics
analytics().logScreenView({
    screen_name: 'SignUpScreen',
    screen_class: 'SignUpScreen'
});
 

Ответ №2:

Я думаю, что вы не на 100% точно следовали документам 🙂

В вашем коде вы делаете:

 import  {analytics }from '@react-native-firebase/analytics';
 

Однако, если вы посмотрите на этот файл: https://github.com/invertase/react-native-firebase/blob/master/packages/analytics/lib/index.js вы увидите, что именованная аналитика экспорта отсутствует. Что вы делаете при вводе import {analytics} , так это импортируете именованный экспорт: https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export

Поскольку в этом файле нет именованной аналитики экспорта, значение для аналитики не определено, и вы получаете описанную вами ошибку.

Я должен ввести (как написано в связанном примере):

 import analytics from '@react-native-firebase/analytics';
 

Комментарии:

1. Я попробовал это, и я получил аналогичную ошибку, можете ли вы проверить выше, я приложил скриншот?

2. Используемая вами версия analytics больше не имеет функции setCurrentScreen. Вместо этого вы должны использовать logScreenView github.com/invertase/react-native-firebase/commit /… «analytics().logScreenView({ screen_class: screenName, screen_name: screenName, }) «

3. Хорошо, спасибо, ошибка исчезла, я подожду 24 часа, чтобы увидеть, появятся ли экраны в консоли Google.

4. Круто! Не забудьте отметить как «ответ», если все хорошо 🙂

Ответ №3:

В новом обновлении setCurrentScreen больше нет. Используйте другие функции для регистрации.