Firebase Functions — это бессерверная платформа, которая позволяет разработчикам писать и развертывать серверный код, не беспокоясь об управлении инфраструктурой. Его можно использовать для выполнения таких задач, как отправка электронных писем, обработка платежей и запуск моделей машинного обучения.

Express – это популярная веб-платформа для создания веб-приложений с использованием Node.js. Он разработан, чтобы упростить создание веб-приложений и API-интерфейсов, предоставляя набор функций и утилит, которые упрощают общие задачи веб-разработки.

Шаг 1: Создайте новый проект

Первым шагом является инициализация нового проекта. Создайте новую пустую папку проекта:

$ mkdir express-firebase-function

Заходим в созданную папку:

$ cd express-firebase-function

Инициализируйте проект, создав package.json с пакетом npm:

$ npm init -y

Шаг 2. Подключите Firebase

Установите пакеты Firebase, чтобы подключить Firebase и сгенерировать функции Firebase:

$ npm install firebase firebase-tools

Войдите в Firebase в консоли:

$ npx firebase login

Шаг 3. Создайте функцию Firebase

Создайте шаблон функции Firebase с помощью интерфейса командной строки Firebase:

$ npx firebase init functions

Шаг 4. Запустите и протестируйте функцию Firebase

Протестируйте API-интерфейс функции Firebase, вызвав его в первый раз:

$ cd functions
$ npm install
$ npm run serve

Шаг 5: Добавьте экспресс

Установите Express.js в свой локальный проект, выполнив команду из каталога функций:

$ npm install express --save

Откройте файл /function/index.js, затем импортируйте и инициализируйте Express.js:

const functions = require('firebase-functions');
const express = require('express');
const app = express();

В пути / добавьте функцию к этому пути при инициализации функции:

app.get('/', (req, res) => {
  const date = new Date();
  const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
  res.send(`
    <!doctype html>
    <head>
      <title>Time</title>
      <link rel="stylesheet" href="/style.css">
      <script src="/script.js"></script>
    </head>
    <body>
      <p>In London, the clock strikes:
        <span id="bongs">${'BONG '.repeat(hours)}</span></p>
      <button onClick="refresh(this)">Refresh</button>
    </body>
  </html>`);
});

Попробуйте добавить еще одну конечную точку для возврата счетчика BONG в качестве API в разделе /api:

app.get('/api', (req, res) => {
  const date = new Date();
  const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
  res.json({bongs: 'BONG '.repeat(hours)});
});

Экспортируйте приложение Express.js как функцию HTTPS:

exports.app = functions.https.onRequest(app);

Шаг 6: Измените конфигурацию для Express

В вашем файле firebase.json перепишите конфигурацию, чтобы разрешить Express.js обслуживать различные подпути, которые мы настроили:

{
 "hosting": {
   // ...
   // Add the "rewrites" attribute within "hosting"
   "rewrites": [ {
     "source": "**",
     "function": "app"
   } ]
 }
}

Если вам понравилась эта история и вы хотели бы поддержать меня (и тысячи других писателей)

пожалуйста, подпишитесь и подпишитесь, чтобы получать все обновления и стратегии.

Спасибо!