Cloud Functions:如何上传附加文件以在代码中使用?
Posted
技术标签:
【中文标题】Cloud Functions:如何上传附加文件以在代码中使用?【英文标题】:Cloud Functions: how to upload additional file for use in code? 【发布时间】:2018-08-05 09:48:55 【问题描述】:我需要在我的代码中访问protoc
文件。在本地我只是把它放在文件夹中,但是如何从部署的 Firebase 函数中获取这个文件?
const grpc = require('grpc');
const PROTO_PATH = __dirname + '\\protos\\prediction_service.proto';
exports.helloWorld = functions.https.onRequest((request, response)
var tensorflow_serving = grpc.load(PROTO_PATH).tensorflow.serving;
...
【问题讨论】:
【参考方案1】:您要上传 3 个文件来部署您的 Cloud Function:
index.js package.json prediction_service.proto要通过开发者控制台执行此操作,您需要:
-
转到 Google Cloud Developer Console > Cloud Functions > Create Function
在“源代码”字段中,选择:
“ZIP 上传”并选择一个 zip 文件,包括您的 3 个文件,
“ZIP from Cloud Storage”并在 GCS 上选择文件位置,
“云源存储库”并提供您的存储库详细信息
填写剩余字段并点击“创建”
部署后,您将在函数的源选项卡中看到显示的三个文件。
或者,您可以使用 gcloud 通过以下命令部署文件:
gcloud beta functions deploy <functionName> --source=SOURCE
其中 source 可以是 Google Cloud Storage 上的 ZIP 文件、对源代码库的引用或本地文件系统路径。我建议您查看 doc 以获取此命令的完整详细信息。
【讨论】:
太棒了!我们是否有能力使用命令行上传而不是每次都创建存档? 两个问题都是。我已编辑我的答案以包含此信息。【参考方案2】:对于 Firebase 函数,我发现这种方式最简单:
-
将您的 .proto 文件放入 firebase 项目的 functions 文件夹(index.js 和 package.json 所在的位置)。
使用 CLI 命令
firebase deploy --only functions
正常部署您的功能
正如您在此处看到的,该文件会自动添加到 GCP 中的项目中:
你可以在你的 node.js 项目中访问它:
protobuf.load(__dirname + '/schema.proto')
【讨论】:
【参考方案3】:当您将 Firebase Cloud Functions 与 TypeScript 一起使用时(您的代码在 functions/src/index.ts
中),您需要将附加文件放在 functions/lib
中
【讨论】:
为确保顺利进行,您可以更新 package.json 构建命令以运行自定义脚本来复制文件。即“构建”:“节点复制-deps && tsc”。这意味着标准的“firebase deploy --only 函数”将自动复制文件【参考方案4】:虽然可以使用 GCS,但在源代码中包含文件很简单。
-
将您的 package.json、index.js(或 package.json 的“main”字段中指定的任何文件)和其他依赖文件放在一个目录中。
创建函数时,通过 ZIP 上传或云源存储库提供包含其他文件的目录。
您的其他文件可在
path.join(__dirname, 'your/path/file.ext')
获得
【讨论】:
感谢您的回复,您能否详细描述一下主要领域?我没有这样的 这是可选的。如果您想为您的条目 javascript 文件使用不同的文件名,您可以将'main': 'yourfile.js'
添加到 package.json。它记录在here 并在this SO question 中讨论以上是关于Cloud Functions:如何上传附加文件以在代码中使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Cloud Functions for Firebase(multer、busboy)上使用 express 执行 HTTP 文件上传
上传到 Firebase 存储时如何使用 Cloud Functions for FIrebase 获取 mp3 文件的持续时间
从使用Cloud Functions for Firebase上传的文件中获取下载URL
如何使用 Cloud Functions 接收和解析电子邮件?