Google云端功能:您如何共享源代码?

时间:2017-03-16 18:22:52

标签: google-cloud-functions

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

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

src/
  server/
    /app/controllers/email_helper.js
  fns/
    send-confirm/

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

我试过了:

  • 以符号方式链接'server'目录
  • 将本地存储库添加到send-confirm / package.json

上述两项工作都没有。

1 个答案:

答案 0 :(得分:4)

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

云功能可以从以下任何一个地方加载模块:

  • 任何公共npm存储库。
  • 任何网络可见网址。
  • functions/目录中为firebase init生成的firebase deploy目录中的任何位置,以及functions/package.json上传的内容。

在您的情况下,从../server/的角度来看,firebase deploy目录不属于任何类别,因此云功能无法使用您的模块。遗憾的是,server/并未遵循符号链接,这就是该解决方案无效的原因。

我看到两种可能的即时修复:

  • 将您的functions/目录移至functions/package.json下。我意识到这不是最漂亮的目录布局,但它是最容易修复的黑客攻击。在./server中,您可以在.tar上拥有本地依赖关系。
  • 将代码暴露在某处的URL后面。例如,您可以将firebase deploy打包并将其放在Google云端硬盘或Firebase云存储上。或者,您可以使用公共git存储库。

将来,如果html = pd.DataFrame([[1,2,3], ['dog', 'cat', 42]]).to_html() part1 = MIMEText(html, 'html') msg.attach(part1) part2 = MIMEText('html') coolstring = 'This is a dope-ass DataFrame yo' part2.set_payload(coolstring) msg.attach(part2) 遵循符号链接,我会喜欢它。我已经在Firebase的内部错误跟踪器中提交了功能请求。