undefined не является функцией (оценивается как _app.default.database () ') - PullRequest
0 голосов
/ 18 февраля 2019

При попытке создать нового сотрудника я получил сообщение об ошибке (ввод данных в базу данных firebase, обратите внимание, что речь идет не о входе по электронной почте / паролю, как на вкладке аутентификации).Проблема появляется только после того, как я нажму кнопку отправки (которая должна вводить введенные пользователем данные в базу данных. Кроме того, я должен быть уже подключен к базе данных Firebase, так как регистрация и логин электронной почты / пароль работают правильно.

Ошибка на экране эмулятора Android при включении выглядит следующим образом: undefined is not a function (evaluating '_app.default.database()')

в строке после этого также указано, что есть ошибка: D:\Programs\reactnative\manager\src\actions\EmployeeActions.js:20:2

Из информации о gradle, это то, что яиспользуйте на практике:

"@babel/runtime": "^7.3.1",
"firebase": "^4.9.1",
"react": "16.6.3",
"react-native": "0.58.4",
"react-native-router-flux": "^3.45.0",
"react-redux": "^6.0.0",
"redux": "^4.0.1",
"redux-thunk": "^2.3.0"

Вот мой код в EmployeeActions.js, который, как я считаю, связан с этой ошибкой:

import firebase from '@firebase/app';
import '@firebase/auth';
import { Actions } from 'react-native-router-flux';
import {
  EMPLOYEE_UPDATE,
  EMPLOYEE_CREATE
} from './types';

export const employeeUpdate = ({ prop, value }) => {
  return {
    type: EMPLOYEE_UPDATE,
    payload: { prop, value }
  };
};

export const employeeCreate = ({ name, phone, shift }) => {
  const { currentUser } = firebase.auth();

return (dispatch) => {
  firebase
  .database()
  .ref(`/users/${currentUser.uid}/employees`)
    .push({ name, phone, shift })
    .then(() => {
      dispatch({ type: EMPLOYEE_CREATE });
      Actions.employeeList({ type: 'reset' });
    });
  };
};

Я понимаю, что существует довольно много неопределенныхне случаи ошибок объекта, но они часто немного отличаются от моего случая, что приводило меня в замешательство. Я довольно новичок в реакции на себя, любая помощь будет принята.

Спасибо за продвижение.

1 Ответ

0 голосов
/ 26 февраля 2019

Вам необходимо использовать:

require ('@ firebase / database');

в файле EmployeeActions.js

...