Firebase 托管公用文件夹别名

kau*_*nde 2 firebase firebase-hosting google-cloud-functions firebase-cli

我有一个基于反应的快速现有项目,我成功地通过云功能将其移植到 Firebase 托管......至少在开发服务器上。它看起来像这样..这是使用命令在http://localhost:5000/上运行

firebase serve --only functions,hosting
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在,当我部署它时,它看起来像

在此输入图像描述

这不是静态网站。关注此处的 firebase 视频 https://www.youtube.com/watch?v=LOeioOKUKI8

所以我有快速服务器运行

app.use('/static',express.static('../public'));
Run Code Online (Sandbox Code Playgroud)

我必须这样做,因为否则,firebase 托管会将每个路径视为公共路径,并且它会弄乱来自公共文件夹的脚本以及反应应用程序中的反应路由器。

虽然这可以在 firebae 运行的本地服务器上运行,但它会在 prod 上抛出 404 错误。

Failed to load resource: the server responded with a status of 404 ()
Run Code Online (Sandbox Code Playgroud)

关键是我在本地计算机上完成了所有这些工作,但部署却无法满足要求。

部署并不顺利。

firebase deploy
Run Code Online (Sandbox Code Playgroud)

没用。

firebase --only hosting
Run Code Online (Sandbox Code Playgroud)

工作了。

firebase --only functions
Run Code Online (Sandbox Code Playgroud)

有一段时间没有工作。

它一直在扔

Error setting up the execution environment for your function. Please try again after a few minutes.
Run Code Online (Sandbox Code Playgroud)

几次才终于成功。我没有做任何改变来让它发挥作用。刚刚自己做的。

我有什么遗漏的吗?我对 firebase 托管非常陌生。

我已经在某处运行了一个生产站点,我希望将其移植到 firebase。但我不能随机出现“几分钟后重试的问题”。

但首先,为什么我的静态文件在开发环境中渲染时却没有在产品环境中渲染?

谢谢

Mic*_*igh 5

您的public目录需要嵌套在functions文件夹下,因为只有该functions文件夹中的文件才会部署到 Cloud Functions 并可从 Node.js 获取。

本地模拟器并没有积极防范这种树导航,这就是它在本地工作的原因。

不过,一般来说,您可能需要稍微重组您的应用程序,以便将静态资产直接部署到 Firebase Hosting,而不是由 Express 提供服务。