我有2个存储库,一个用于Firebase功能,另一个用于静态Firebase托管react网站。他们俩都使用相同的firebase项目。
myfirebaseproject
--- firebase functions
--- firebase hosting
------index.html
我可以从firebase-function中读取我的firebase托管文件吗?
let indexHTML = fs.readFileSync('pathToFirebaseHosting/index.html').toString();
答案 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);
});