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 接收和解析电子邮件?

如何在 PC 上本地测试 Cloud Functions for Firebase

我可以将 Firebase Cloud Functions 用于搜索引擎吗?