【问题标题】:Configure the deployment directory in firebase functions在 firebase 函数中配置部署目录
【发布时间】:2020-07-27 17:49:17
【问题描述】:

我有一个基于 typescript 的现有 nodejs 应用程序。

现有的nodejs应用结构如下

ROOT
 - dist
 - src
  - *.ts
 - test
 - package.json
 - gulpfile.json
 - .env

所有编译都在 dist 下,应用程序工作正常。

我已经在许多任务中使用 firebase 函数,并且也希望在这个应用程序中使用相同的函数。

现在我正在尝试将 firebase 功能直接集成到这个项目中。修改后的结构是

ROOT
 - dist
 - src
  - *.ts
  - workers <firebase functions>
    - index.ts
 - test
 - package.json
 - gulpfile.json
 - .env
 - firebase.json
 - .firebaserc

为确保 firebase 查看正确的文件夹,我已将 firebase.json 中的文件夹配置为指向根目录

{
  "functions": {
    "source": "."
  }
}

除了我在 package.json 中做了必要的更改

{
  ...
  "main": "dist/workers/index.js",
  "engines": {
        "node": "10"
  },
  ...

这些配置确保我能够在cloud shell上运行功能

firebase functions:shell --debug

问题在于部署功能。

firebase deploy --only functions --debug

firebase 部署正在部署我的整个目录,导致 400 错误。调试日志清楚地显示包大小超过 300 MB,基本上打包了所有不必要的文件。

如何确保 firebase 部署仅部署所需的文件夹。

【问题讨论】:

    标签: google-cloud-functions firebase-tools


    【解决方案1】:

    Firebase CLI 将无条件地部署您指定为“源”的所有内容,减去 node_modules,这将由 Cloud Functions 在服务端使用 npm install 重建。无法从此位置添加或省略文件。

    默认情况下,Firebase CLI 初始化项目会创建一个名为“functions”的文件夹,并将其用作所有函数相关代码和配置的根目录,包括 package.json 以及所有源代码和转译代码。这通常是项目的组织方式。

    鉴于此要求,您可能应该重新考虑将函数添加到现有项目,并将函数代码保留在其自己的项目中。有一些方法可以在项目之间共享代码,如果这是您需要做的,这是另一个需要研究的主题。

    【讨论】:

    • 感谢您的确认。是的,我有一个单独的函数项目,并且工作正常。尝试在我的核心 repo 下使用 firebase 功能的原因是看看我是否可以利用现有的模型和服务。我认为唯一的出路是分离服务或重组类似于firebase结构的当前代码。还有其他替代建议吗?
    • 我没有任何具体内容。使用您的最佳判断。
    猜你喜欢
    • 2021-04-21
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 2019-11-26
    相关资源
    最近更新 更多