从Firebase功能触发器访问Firebase托管文件

时间:2018-12-23 13:32:50

标签: firebase google-cloud-firestore google-cloud-functions

我有2个存储库,一个用于Firebase功能,另一个用于静态Firebase托管react网站。他们俩都使用相同的firebase项目。

myfirebaseproject
--- firebase functions

--- firebase hosting
------index.html

我可以从firebase-function中读取我的firebase托管文件吗?

let indexHTML = fs.readFileSync('pathToFirebaseHosting/index.html').toString();

2 个答案:

答案 0 :(得分:1)

要意识到的一件重要事情是Firebase托管和Cloud Functions是完全不同的产品,并且在非常临时和短暂的Cloud Functions实例中没有简单的本地文件托管路径。一切都不会在一个地方捆绑在一起(根本无法扩展)。

由于托管文件都是公开的,因此弗兰克所说的是对的-只需发出一个HTTP请求即可。我建议改用request-promise模块,因为它为您提供了一个基于Promise的界面,在Cloud Functions中更易于使用。

请注意,如果要发出这样的传出HTTP请求,您将必须为项目启用计费。否则,Cloud Functions将不允许请求发生。另请注意,从Cloud Functions和Hosting进行的出入将有额外的账单。因此,如果您经常发出此请求,则预计会产生一些相关费用。

如果您只想在Cloud Function中使用某些静态文件,而无需发出外部请求,只需将这些文件复制到您的functions文件夹中,然后将它们与代码一起部署。您将能够在本地阅读它们,无需启用计费即可尝试,也不会产生出口和入口费用。它也会更快。

答案 1 :(得分:0)

尽管有一个REST API for Firebase Hosting API,但它集中在deploying updates上,并且没有调用来访问已部署的文件。

但是,由于所有部署的文件都可以公开访问,因此您可以通过常规HTTP请求从公共互联网上读取它们:

request('https://yourproject.firebaseapp.com/index.html', (err, res, body) => {
  if (err) { return console.log(err); }
  console.log(body);
});
相关问题