Google Cloud Functions:您如何共享源代码?

hab*_*her 4 google-cloud-functions

我有一个节点服务器和多个控制器,它们在该目录中执行数据库操作和助手(例如,对于电子邮件)。

我想在我的函数中使用该目录中的源代码。假设以下目录结构:

src/
  server/
    /app/controllers/email_helper.js
  fns/
    send-confirm/
Run Code Online (Sandbox Code Playgroud)

email_helper在发送确认功能中使用的最佳方法是什么?

我试过了:

  • 象征性地链接“服务器”目录
  • 将本地仓库添加到send-confirm / package.json

以上任何一项都没有。

Rob*_*man 6

原则上,您的Cloud Functions可以使用任何其他Node.js模块,就像使用任何标准Node.js服务器一样。但是,由于Cloud Functions需要在云中构建模块,因此需要能够从云中找到那些依赖模块。这就是问题所在。

Cloud Functions可以从以下任一位置加载模块:

  • 任何公共npm存储库。
  • 任何网络可见的URL。
  • 为您生成并在上载的functions/目录中的任何位置。firebase initfirebase deploy

在您的情况下,从的角度来看functions/package.json,该../server/目录不会属于任何类别,因此Cloud Functions无法使用您的模块。不幸的是,firebase deploy没有遵循符号链接,这就是为什么该解决方案不起作用的原因。

我看到两个可能的立即修复:

  • server/目录移到functions/。我意识到这不是最漂亮的目录布局,但这是黑客入侵时最简单的修复方法。在functions/package.json那你可以在本地的依赖./server
  • 将您的代码公开在某个网址的后面。例如,您可以打包.tar并将其放在Google云端硬盘或Firebase Cloud Storage上。或者,您可以使用公共git存储库。

将来,如果firebase deploy跟随符号链接,我会喜欢的。我已经在Firebase的内部错误跟踪器中提出了功能请求。