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"
    }
  }
]
},