如何从“/functions”以外的其他目录部署功能?

Posted

技术标签:

【中文标题】如何从“/functions”以外的其他目录部署功能?【英文标题】:How to deploy functions from other directory than '/functions'? 【发布时间】:2018-08-01 16:00:36 【问题描述】:

大卫在他的回购中:

https://github.com/davideast/react-s-s-r-firebase-hosting

在主根目录中有带有firebase函数index.js的文件,没有/functions目录中。

但是,如果我这样做并将我的 index.js 文件放到主根目录,如果我这样做 firebase deploy --only functions 它会在控制台中显示:

i  deploying functions

Error: functions\index.js does not exist, can't deploy Firebase Functions

:他是怎么做到的?我该如何做同样的事情并从/functions以外的其他目录成功部署功能?

谢谢

firebase.json


  "hosting": 
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      
        "source": "**",
        "function": "s-s-rapp"
      
    ]
  ,
  "functions": 
     "source": "/"
  

【问题讨论】:

【参考方案1】:

您使用 Firebase CLI 创建的项目工作区包含一个名为 firebase.json 的文件,其中包含如下所示的 Cloud Functions 节:

"functions": 
  "predeploy": [
    "npm --prefix $RESOURCE_DIR run lint"
  ],
  "source": "functions"

“源”属性定义了包含将在 Cloud Functions 上运行的代码的文件夹的名称。您可以将其更改为您想要的任何内容。

【讨论】:

我和大卫一样 - "source": "**",。但是,它仍然不起作用。 我只是复制粘贴了他的firebase.json - github.com/davideast/react-s-s-r-firebase-hosting/blob/master/… 该文件只显示“hosting”的配置,与“functions”不同。 你的“functions”节看起来不像我的,它不应该包含任何重写。重写用于托管。托管与 Cloud Functions 是不同的产品,因此它们具有不同的配置。您的“functions”节应该有一个名为“source”的直接子属性,它是包含您要部署的源的文件夹的名称。 这个函数字段的“来源”是否记录在任何地方?【参考方案2】:

如果您想使用您的根目录作为您的函数文件夹,只需将您的 source 密钥更改为您的 firebase.json 中的 .

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

这将在根目录中查找您的 index.js 文件(请记住将所有其他文件也移动到您的根目录中)。

文档:https://firebase.google.com/docs/functions/manage-functions#deploy_functions

【讨论】:

以上是关于如何从“/functions”以外的其他目录部署功能?的主要内容,如果未能解决你的问题,请参考以下文章

部署 Nuxt 应用程序时如何在 Firebase Functions 中启用 Vuex

Azure Functions 2.0:如何从命令提示符启动项目并允许从其他计算机连接?

Cloud Functions 在 Windows 上的 lint 期间部署错误:“enoent ENOENT:没有这样的文件或目录”

如何解决部署functions.pubsub.schedule时创建函数失败的问题

如何从我的连接自己的通道以外的其他通道恢复未确认的 AMQP 消息?

如何在 IE 以外的其他浏览器中将 URL 参数传递给 ClickOnce 应用程序?