【问题标题】:How do you add Firebase/Firestore to an existing NestJS app inside of a NRWL monorepo?如何将 Firebase/Firestore 添加到 NRWL monorepo 内的现有 NestJS 应用程序中?
【发布时间】:2020-08-23 14:03:14
【问题描述】:

我正在使用 Angular 和 NestJS 构建一个 monorepo,并且很难弄清楚如何在 NestJS 应用程序中正确添加 Firestore。首先,我遇到的大部分事情都是让我们使用 Firebase 生成一个新的 NestJS 应用程序。我遇到了this tutorial,感觉更接近我的情况,因为他们先构建了 Nest 应用程序,然后再添加 Firebase。但是我仍然迷路,因为它让我们删除了 firebase 安装的函数文件夹,然后告诉我们使用在 Nest 应用程序中生成的 package.json 文件。由于我使用 NRWL,package.json 文件是所有项目的根包文件,我不确定如何处理它。

我在index.ts 文件中也遇到了错误,它告诉我们使用此导入创建

import * as functions from 'firebase-functions';

由于我的设置与他们的设置略有不同,它无法找到该文件或找出我应该将哪个文件放在它的位置。我没有任何特定的错误消息或发生任何事情,只是或多或少地试图弄清楚如何解决这个问题,并且无法找到围绕 NestJS 量身定制的更多信息。有人可以解释一下吗?

【问题讨论】:

    标签: firebase nestjs nrwl-nx


    【解决方案1】:

    第 1 步 - 创建 Nest 应用程序

    nx generate @nrwl/nest:app myapp
    

    第 2 步 - 添加函数(不在 apps 文件夹内)。

    npm install -g firebase-tools
    firebase init functions
    
    

    删除函数目录。

    rm -rf functions
    

    现在更新 firebase 配置 firebase.json 以指向 Nest 应用。

    {
      "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 步 - 更新 package.json

    将以下行添加到您的 package.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
    

    【讨论】:

    • 好的,我在最后一部分遇到了问题。首先我在-rm -rf 部分收到一个错误,说-rf 无法识别。我改用-fo 并删除了该文件夹。接下来我收到一个错误,说&amp;&amp; 无效,所以我将其删除。然后--only functions 部分给出了一个错误,说--only 是一个未知选项。我尝试了--only-functions 并得到了同样的错误,所以我将其保留为firebase serve,并且我有一个完整的module not found 错误列表,因为它无法解析任何东西的路径。
    • rm 命令仅适用于 Linux 发行版或基于(也适用于 MAC)。在 Windows 上,您可以删除由 firebase 生成的 functions 文件夹。确保您正在安装 firebase-tools;
    • 我正在使用适用于 Windows 的 VSCode,并且按照教程和您的帖子中的说明安装了 firebase-tools。什么都找不到。
    • 我在第 2 步中看到您强调了 (not in apps folder)。我已将它安装在我的后端应用程序的根文件夹中,对吗?
    • 是的,这根本不适合我。自从我上次回复以来,我卸载并重新安装了 10 次。您能否更具体地说明我需要将东西安装到哪些文件夹中,并为 Windows 机器定制更多内容?
    猜你喜欢
    • 2023-01-09
    • 2019-09-22
    • 2023-01-03
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2021-08-22
    • 2018-03-17
    • 1970-01-01
    相关资源
    最近更新 更多