Firebase 托管重写不在 Google 云 运行 上显示 SSR 内容
Firebase Hosting rewrite doesn't show SSR content on Google Cloud Run
为了服务器端渲染我的项目,我设置了一个 docker 容器 Node.js。
该容器在 Google 的容器注册表中注册,并连接到 Cloud 运行 中的服务。当我使用提供的服务 URL 时,网站是 SSR,一切看起来都很好。
为了将项目与 firebase 连接,我写了这个重定向:
"hosting": {
"public": "dist/browser",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"run": {
"serviceId": "nest-server-ssr",
"region": "europe-west1"
}
}
]
},
不幸的是,当我现在查看代码时,它不再在服务器端呈现。
有人遇到过类似的问题吗?
编辑:
正如 Michael 提到的那样,问题是第二个 index.html 文件。你可以看到这是送达的。 (我添加了测试评论以确保)
所以解决方案就是从 public 目录中删除 index.html 文件。谢谢迈克尔的帮助!
(猜测发生了什么)
如果您的 dist/browser
文件夹中有一个 index.html
并访问您网站的根路径 (/
),将提供静态 HTML 而不是调用云 运行 服务。
如您所见in the docs,"exact-match" 静态内容的优先级高于重写。
要解决这个问题,您只需从 public 目录中删除 index.html
文件。
您只需要将'index.html'添加到忽略列表中,这样它就不会被部署。
"hosting": {
"public": "dist/browser",
"ignore": [
"index.html",
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"run": {
"serviceId": "nest-server-ssr",
"region": "europe-west1"
}
}
]
},
为了服务器端渲染我的项目,我设置了一个 docker 容器 Node.js。 该容器在 Google 的容器注册表中注册,并连接到 Cloud 运行 中的服务。当我使用提供的服务 URL 时,网站是 SSR,一切看起来都很好。
为了将项目与 firebase 连接,我写了这个重定向:
"hosting": {
"public": "dist/browser",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"run": {
"serviceId": "nest-server-ssr",
"region": "europe-west1"
}
}
]
},
不幸的是,当我现在查看代码时,它不再在服务器端呈现。
有人遇到过类似的问题吗?
编辑:
正如 Michael 提到的那样,问题是第二个 index.html 文件。你可以看到这是送达的。 (我添加了测试评论以确保)
所以解决方案就是从 public 目录中删除 index.html 文件。谢谢迈克尔的帮助!
(猜测发生了什么)
如果您的 dist/browser
文件夹中有一个 index.html
并访问您网站的根路径 (/
),将提供静态 HTML 而不是调用云 运行 服务。
如您所见in the docs,"exact-match" 静态内容的优先级高于重写。
要解决这个问题,您只需从 public 目录中删除 index.html
文件。
您只需要将'index.html'添加到忽略列表中,这样它就不会被部署。
"hosting": {
"public": "dist/browser",
"ignore": [
"index.html",
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"run": {
"serviceId": "nest-server-ssr",
"region": "europe-west1"
}
}
]
},