Хостинг nodeJS приложение с firebase

Итак, у меня есть это веб-приложение, использующее angularJS и nodeJS. Я не хочу просто использовать localhost для демонстрации моего проекта, потому что он не выглядит круто, когда я набираю "node server.js", а затем перехожу к localhost.....

Поскольку я намерен использовать Firebase для данных, я заметил, что Firebase предоставляет хостинг. Я попробовал это, но, похоже, у меня есть только index.html, а не через /using server.js. У меня есть настроенные файлы для использования/обновления сервера. Итак, как я могу сообщить Firebase Hosting использовать мой сервер и связанные с ним файлы при хостинге?

Можно ли сообщить Firebase, эй, запустить "node server.js" для размещения моего index.html?

Ответ 1

Я предполагаю, что вы формулируете вопрос, который хотите увидеть на этом сайте, из интернета.

Два маршрута, которые вы могли бы посетить здесь.

a) Подавайте свой индекс через хостинг Firebase. В Firebase хранятся только активы. Если ваше приложение Angular обслуживается через Node, вам нужно будет изменить свою архитектуру как более SPA-ish

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

У вас будет сервер API на чем-то более подходящем, например, через Nodejitsu.

b) Служите все это через что-то вроде Nodejitsu (хостинговая платформа) или ваша собственная виртуальная машина, управляемая другой хостинговой компанией, такой как BuyVM.net.

Ответ 2

Другая идея: если ваше приложение nodejs не зависит от приложения angularjs (однако они используют общие данные и выполняют операции над этой моделью данных), вы можете разделить их и подключить их только через firebase.

Firebase хостинг → index.html и необходимые файлы angularjs.

Локально (ваш ПК) → server.js, который просто подключается к firebase и запускается при изменении данных.

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

Я смог сделать это, чтобы контролировать хрометром в моем доме, находясь в доме друзей.

Вот пример из моего последнего проекта (я пытаюсь сделать DVR).

https://github.com/onaclov2000/webdvr/blob/master/app.js

var FB_URL = '';
var Firebase = require('firebase');

var os = require('os')
var myRootRef = new Firebase(FB_URL);

var interfaces = os.networkInterfaces();
var addresses = [];
for (k in interfaces) {
    for (k2 in interfaces[k]) {
        var address = interfaces[k][k2];
        if (address.family == 'IPv4' && !address.internal) {
            addresses.push(address.address)
        }
    }
}

// Push my IP to firebase
// Perhaps a common "devices" location would be handy
var ipRef = myRootRef.push({
    "type": "local",
    "ip": addresses[0]
});


myRootRef.on('child_changed', function(childSnapshot, prevChildName) {
   // code to handle child data changes.
   var data = childSnapshot.val();
   var localref = childSnapshot.ref();
   if (data["commanded"] == "new") {
      console.log("New Schedule Added");
      var schedule = require('node-schedule');
      var date = new Date(data["year"], data["month"], data["day"], data["hh"], data["mm"], 0);
      console.log(date);
      var j = schedule.scheduleJob(date, function(channel, program, length){
                 console.log("Recording Channel " + channel + " and program " + program + " for " + length + "ms");
      }.bind(null, data["channel"], data["program"], data["length"]));

      localref.update({"commanded" : "waiting"});
  }
});

Когда я меняю свои "командные" данные на FB_URL, на "новый" (что может быть выполнено с помощью угловых символов ОЧЕНЬ Просто, используя операцию ng-click, например), он будет планировать запись для определенной даты и времени (не все фактически функциональны в данный момент).

Ответ 3

Возможно, я опаздываю, но с тех пор прошло 3 года, теперь доступно решение от Firebase в виде облачных функций Это не прямолинейно, но выглядит многообещающим, если однажды можно немного реорганизовать свой код