如何从“/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时创建函数失败的问题