Я не могу заставить Firebase работать над моим проектом React

Я пытаюсь заставить firebase работать над моим проектом React (используя Webpack v3), но у меня возникают некоторые проблемы.

Я добавил "firebase": "^4.10.1" к своему package.json, а в файл firebase.js добавил следующее:

import * as firebase from 'firebase';

const config = {
    apiKey: "API_KEY",
    authDomain: "DOMAIN",
    databaseURL: "DATA_URL",
    projectId: "ID",
    storageBucket: "STORAGE_BUCKET",
    messagingSenderId: "SENDER_ID"
};

firebase.initializeApp(config);

firebase.database().ref().set({
    message: 'Connection Successful!'
});

На моем app.js я импортировал этот файл firebase.js. import './firebase/firebase';

Если я не ошибаюсь, я должен получить "Соединение успешно!" сообщение в моей базе данных, но оно не работает.

Вместо этого я получаю в консоли ошибку. Я поискал в Интернете и нашел несколько человек с похожими ошибками, говорящих, что добавление:

node: {
console: true,
fs: 'empty',
child_process: 'empty',
net: 'empty',
tls: 'empty',
dgram: 'empty',
dns: 'empty',
}

чтобы мой webpack.config.json починил бы это. Я попробовал это, и id действительно не работал.

Я больше не получаю эти ошибки, но вместо этого получаю Uncaught TypeError: util.inherits is not a function (полная ошибка здесь). Я продолжал искать и нашел это в документации firebase, где они используют var firebase = require("firebase/app"); вместо import. Я попробовал это и все еще не работал.

Я пытался yarn add util, но безрезультатно.

Любая идея, почему это происходит и/или как это исправить? Спасибо.


person lokilindo    schedule 25.02.2018    source источник


Ответы (1)


Я использую Firebase в React следующим образом:

import firebase from 'firebase'
var config = {
    ...
};
var fire = firebase.initializeApp(config);
fire.database().ref()...
  1. import firebase, а не import * as firebase, не знаю, какой модуль Firebase экспортирует, но, возможно, это изменит ситуацию;
  2. Я инициализирую переменную, которой я присваиваю результат инициализации Firebase (var fire = firebase.initalize...), затем я использую ее для вызовов базы данных, хранилища и всего остального.

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

person Michele Bontorno    schedule 25.02.2018
comment
Спасибо за ответ. Я попробовал ваш import, но у меня не сработало. В итоге я получил [email protected] и использовал метод require, чтобы заставить его работать. - person lokilindo; 25.02.2018