Как добавить Firebase / Firestore в существующее приложение Nest JS внутри монорепозитория NRWL? - PullRequest
0 голосов
/ 08 мая 2020

Я создаю монорепозиторий с Angular и Nest JS, и мне трудно понять, что делать, чтобы правильно добавить Firestore в приложение Nest JS. Во-первых, большая часть того, с чем я столкнулся, заставляет нас создать новое приложение Nest JS с Firebase. Я наткнулся на этот учебник , который был немного ближе к моей ситуации, поскольку они сначала создают приложение Nest, а затем добавляют Firebase. Однако я все еще потерялся, потому что он заставляет нас удалить папку функций, которую устанавливает firebase, а затем говорит нам использовать файл package.json, созданный в приложении Nest. Из-за того, что я использую NRWL, файл package.json является файлом пакета root для всех проектов, и я не уверен, как с ним справиться.

Я также получаю сообщение об ошибке в index.ts файл, который он говорит нам создать с помощью этого импорта

import * as functions from 'firebase-functions';

он не может найти файл или выяснить, какой файл я предполагаю поместить на его место, поскольку мои настройки немного отличаются от их. У меня нет каких-либо конкретных сообщений об ошибках или чего-либо, что происходит, просто я более или менее застрял, пытаясь выяснить, как go об этом, и не смог найти много об этом, адаптированном для Nest JS. Кто-нибудь может пролить свет на это, пожалуйста?

1 Ответ

1 голос
/ 08 мая 2020

Шаг 1 - Создание приложения Nest

nx generate @nrwl/nest:app myapp

Шаг 2 - Добавление функций (не внутри папки apps).

npm install -g firebase-tools
firebase init functions

Удаление каталога функций.

rm -rf functions

Теперь обновите конфигурацию firebase firebase.json, чтобы указать на вложенное приложение.

{
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ],
    "source": "."
  }
}

Шаг 3 - Установите зависимости

npm i firebase-functions firebase-admin express @nestjs/platform-express

Шаг 4 - Обновите пакет. json

Добавьте следующие строки в свой пакет. json.

  "main": "dist/apps/myapp/main.js",
  "engines": {
    "node": "<=10"
  }

Шаг 5 - Экспорт сервера

Переопределите содержимое внутри вашего apps/myapp/src/main.ts .

import { NestFactory } from '@nestjs/core';
import { ExpressAdapter } from '@nestjs/platform-express';
import { AppModule } from './app/app.module';
import * as express from 'express';
import * as functions from 'firebase-functions';

const server = express();

export const createNestServer = async (expressInstance) => {
  const app = await NestFactory.create(
    AppModule,
    new ExpressAdapter(expressInstance),
  );

  return app.init();
};

createNestServer(server)
    .then(v => console.log('Nest Ready'))
    .catch(err => console.error('Nest broken', err));

export const api = functions.https.onRequest(server);

Шаг 6 - Сборка, обслуживание, развертывание

nx build myapp && firebase serve --only functions
...