我有一个节点服务器和多个控制器,用于在该目录中执行数据库操作和帮助程序(例如,用于电子邮件)。
我想在我的函数中使用该目录中的source。假设以下目录结构:
src/
server/
/app/controllers/email_helper.js
fns/
send-confirm/
在发送确认功能中使用email_helper
的最佳方法是什么?
我试过了:
上述两项工作都没有。
答案 0 :(得分:4)
原则上,您的Cloud Functions可以使用任何其他Node.js模块,就像任何标准Node.js服务器一样。但是,由于云功能需要在云中构建模块,因此需要能够从云中找到这些依赖模块。这就是问题所在。
云功能可以从以下任何一个地方加载模块:
functions/
目录中为firebase init
生成的firebase deploy
目录中的任何位置,以及functions/package.json
上传的内容。在您的情况下,从../server/
的角度来看,firebase deploy
目录不属于任何类别,因此云功能无法使用您的模块。遗憾的是,server/
并未遵循符号链接,这就是该解决方案无效的原因。
我看到两种可能的即时修复:
functions/
目录移至functions/package.json
下。我意识到这不是最漂亮的目录布局,但它是最容易修复的黑客攻击。在./server
中,您可以在.tar
上拥有本地依赖关系。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的内部错误跟踪器中提交了功能请求。