Firebase主机重写未重定向至Google Cloud Run

jxct1oxe  于 2023-01-27  发布在  Go
关注(0)|答案(4)|浏览(190)

我正在用我的firebase主机设置一个重定向(重写),这样我就可以调用一个从google cloud run here运行的api。
我试过将重写字符串从"/api/**"(应该捕获到www.example.com的所有内容并将其发送到函数)。删除index.html并切换到"**"以捕获包括index在内的所有路径。到目前为止没有任何效果。page.com/api/**and send that to the function). deleted the index.html and swapped to "**" to capture ALL paths including index. Nothing has worked so far.
我的主机firebase.json是这样设置的,有什么问题吗?

{
  "hosting": {
    "public": "dist/public",
    "ignore": ["firebase.json", "**.*", "**/node_modules/**"],
    "rewrites": [
      {
        "source": "**",
        "run": {
          "serviceId": "next-js-base-api",
          "region": "us-central1"
        }
      }
    ]
  }
}

我也尝试过正常的重定向到另一个页面,这不起作用,什么决定了firebase.json设置何时开始传播和工作?

更新

我尝试运行托管模拟器并使用修改后的重写"source": "/api/**",结果如下:导航到/api返回非崩溃(不重定向),浏览器中的输出为cannot GET /api导航到api/wkapi(api端点捕获的子目录)在浏览器中返回unexpected error

Error: Unable to find a matching rewriter for {"source":"/api/**","run":{"serviceId":"next-js-base-api","region":"us-central1"}}

在控制台中。

6ovsh4lw

6ovsh4lw1#

确保通过运行以下命令更新到最新版本的Firebase CLI:

npm install -g firebase-tools@latest

这将使您能够重写到云运行示例,就像您正在尝试做的那样。

j2qf4p5b

j2qf4p5b2#

实际上,我刚刚运行了这个程序,查看了部署的cloud-run helloworld容器的日志,发现custom-domain/helloworld实际上是Map到container-domain/helloworld,而不是简单地Map到container-domain/。为了解决这个问题,我必须在我的原始Node.js程序中添加一个额外的app.get规则:

app.get('/helloworld', (req, res) => {

然后调用custom-domain/helloworld就可以了。

aelbi1ox

aelbi1ox3#

如果以上所有答案都不能帮助你,那么对我有效的解决方法是:

  • 查找项目中firebase主机使用的公共目录。
  • 删除firebase在执行firebase初始化步骤时创建的index.html文件。

删除生成的index.html文件后,它可以通过重写来运行我的云运行容器。

mwngjboj

mwngjboj4#

在我的例子中,原因是在firebase.json文件中拼错了function,即:

"rewrites": [
      {
        "source": "**",
        "function": "ngssr" // I had spelled this as "functions" (extra s)
      }
    ]

相关问题