Как вы на самом деле * используете * firebase-сервер для тестирования? - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь следовать за https://github.com/urish/firebase-server#usage-example, но, похоже, отсутствует MCVE.

Это тот, который я пытался создать как foo.js:

Firebase = require('firebase');

client = new Firebase('http://localhost.firebaseio.test:5000');
client.on('value', function(thing) {
    console.log('Stuff: ', thing.val());
});

Тем не менее, когда я запускаю его с node foo.js, я просто получаю

TypeError: Firebase is not a constructor
    at Object.<anonymous> (/home/wayne/programming/foo.js:3:10)

Очевидно, это не то, что я ищу. Так что я подумал, может быть, это относится к устаревшей версии Firebase. Итак, давайте просто попробуем заменить это на firebase-admin:

firebase = require('firebase-admin');

firebase.initializeApp({
    credential: firebase.credential.applicationDefault(),
    databaseURL: 'http://localhost.firebaseio.test:5000',
});

db = firebase.database().ref()
db.once('value')
    .then(function(thing) {
        console.log('Stuff: ', thing.val());
    });

(Понятия не имею, как это должно выглядеть: https://github.com/firebase/quickstart-nodejs/blob/master/database/index.js был самый простой пример, который я мог найти)

Но это просто зависает, как будто он планирует что-то сделать, но никогда не делает.

Я запустил свой сервер Firebase с node_modules/.bin/firebase-server -p 5000 -e, и я вижу, что он связан с более сложным кодом, который есть в нашей кодовой базе, но это на путь больше, чем MCVE, что что я просто пытаюсь сделать. Я хочу иметь возможность подключиться к своему серверу Firebase и увидеть, что я могу читать и писать на вещи.

Как вообще можно использовать firebase-server для проверки? Есть ли и MCVE, что мне не хватает?

1 Ответ

0 голосов
/ 15 мая 2018

В этом примере использования firebase-server может отсутствовать то, что 127.0.0.1 localhost.firebaseio.test необходимо добавить в /etc/hosts, иначе это может не решить. как видно из firebase-server -h, нужно передать файлы JSON конфигурации и данных в качестве опций. предложил бы использовать «Базу данных реального времени» и «Облачные функции» вместо попытки запустить собственный сервер WS - потому что для тестирования нужно было бы предоставить ожидаемые файлы JSON - и внешняя библиотека JavaScript, скорее всего, не сможет аутентифицироваться, следовательно, необходимы учетные данные.

В документации говорится, что firebase-server является сервером веб-сокетов Firebase (который звучит автономно и может реализовывать RFC 6455 ); это что-то отличное от firebase serve (мне непонятно, что вы имеете в виду, поэтому примеры были перепутаны - что может быть источником путаницы) ... для Google Firebase можно получить тестовый сервер и эмулятор облачных функций с npm install -g firebase-tools; и при запуске локального тестового сервера с параметром --debug он должен показать, где он может застрять:

firebase serve --debug

выполняется из каталога проекта.

например. может отсутствовать разрешение на доступ к каталогам глобально установленных модулей:

sudo mkdir /usr/lib/node_modules/firebase-tools/node_modules/@google-cloud/functions-emulator/logs
sudo chown -R ....

установка @google-cloud/functions-emulator на уровне проекта также может обойти это.

и вам также потребуется firebase.json, который контролирует развертывание.

например, загрузка public/index.html, которая затем загружает firebasejs/5.0.1/firebase.js, потребуется для проверки в интерфейсном JavaScript, если аутентификация прошла успешно (firebase setup:web генерирует код) и пользователь аутентифицирован и имеет разрешения на read/write по определенному ссылочному пути.

{
  "database": {
  "rules": "database.rules.json"
},
"hosting": {
  "public": "public",
  "ignore": [
      "firebase.json",
      "**/node_modules/**"
    ]
  }
}

, в то время как firebase functions:shell будет запускать этот эмулятор функций в качестве оболочки Node.

firebase/index.js для nodeJS, и, например,. firebase/package.json может ссылаться:

{
  "name": "...",
  "description": "...",
  "private": true,
  "dependencies": {
    "firebase-admin": "~5.8.1",
    "firebase-functions": "^0.8.1",
    "@firebase/database": "^0.1.10",
    "@google-cloud/logging": "^1.1.4"

  }
}

firebase-admin может потребоваться учетная запись службы:

var admin = require("firebase-admin");
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://databaseName.firebaseio.com"
});

руководства также объясняют большую часть этого ... и, конечно, firebase --help.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...