2

我有表达的,基于反应的现有项目,我成功地移植到具有云功能的 Firebase 托管......至少在开发服务器上。它看起来像这样.. 这是在http://localhost:5000/上运行的命令

firebase serve --only functions,hosting

在此处输入图像描述

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

在此处输入图像描述

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

所以我有快递服务器运行

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

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

虽然这适用于由 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。但我不能随机“几分钟后再试一次问题”。

但首先,为什么我的静态文件在 dev 上渲染时没有在 prod 上渲染?

谢谢

4

1 回答 1

4

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

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

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

于 2018-03-09T19:19:23.893 回答