Firebase 托管 public 文件夹别名

Firebase hosting public folder alias

我有基于 express、react 的现有项目,我成功地将其移植到具有云功能的 Firebase 托管......至少在开发服务器上。 看起来像这样.. 这是 运行ning 在 http://localhost:5000/ 上使用命令

firebase serve --only functions,hosting

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

这不是静态站点。在此处关注 firebase vid https://www.youtube.com/watch?v=LOeioOKUKI8

所以我有快递服务器 运行

app.use('/static',express.static('../public'));

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

虽然这在 firebae 的本地服务器 运行 上有效,但它会在 prod 上抛出 404。

Failed to load resource: the server responded with a status of 404 ()

关键是我在本地机器上完成了所有这些工作,但部署却没有义务。

部署并不顺利。

firebase deploy

没用。

firebase --only hosting

成功了。

firebase --only functions

有一段时间没用了。

一直在扔

Error setting up the execution environment for your function. Please try again after a few minutes.

几次才终于奏效。而且我没有改变任何东西来让它工作。自己做的。

有什么我想念的吗?我对 firebase 托管还很陌生。

我已经在某个地方 运行 建立了一个生产站点,我希望将其移植到 firebase。但是我不能有随机'try again after a few minutes problems'.

但首先,为什么我的静态文件在开发环境中呈现时却无法在生产环境中呈现?

谢谢

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

本地模拟器没有主动防范这种树导航,这就是它在本地运行的原因。

不过,一般来说,您可能希望对您的应用进行一些重组,以便将您的静态资产直接部署到 Firebase 托管,而不是由 Express 提供服务。