如何从Firebase托管通过节点expressjs服务静态网站?

时间:2019-05-14 09:27:35

标签: node.js firebase express firebase-hosting

重用How can I serve static web site from s3 through node expressjs?中的问题,但在Firebase的上下文中使用。

当前,我使用app.use(express.static('public')),并且我的节点js express应用程序的公用文件夹中的文件及其工作正常。但是,我想将这些文件(index.html等)存储在我们的Firebase托管中(以便多个应用程序可以使用此网站)。我尝试过

app.get('/', function(req, res) {
    res.sendfile('*-firebaseapp.com/index.html'); 
 });

在Firebase中托管的静态网站是否有任何特定方法可以呈现给Express App?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

res.sendFile() method将其path参数定义为:

  

path必须是文件的绝对路径。

您的Express功能正在Cloud Functions中运行,Cloud Functions是Google基础架构上的无服务器容器。 Firebase托管在不同的基础架构中运行,其中许多服务都发生在边缘缓存中。

Cloud Functions代码无权访问托管基础架构的文件系统。

因此,如果您想从Firebase Hosting提供文件,则必须通过HTTP(S)请求它们,这与任何客户端必须执行的操作类似。另外,您也可以考虑将HTML文件部署到Cloud Functions容器中,方法是将它们放置在index.js / index.ts文件所在的文件夹中。