Firebase 托管重写不会重定向到 Google 云 运行
Firebase Hosting rewrite doesn't redirect to Google Cloud Run
我正在使用我的 firebase 主机设置重定向(重写),以便我可以从 google 云 运行 运行ning 调用 api here.
我已经尝试从 "/api/**"
更改重写字符串(应该将所有内容捕获到页面。com/api/** 并将其发送到函数)。删除 index.html 并交换到 "**"
以捕获包括索引在内的所有路径。到目前为止没有任何效果。
我的主机 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 returns 非崩溃(不重定向),在浏览器中输出 cannot GET /api
导航到 api/wkapi(被 api 端点)returns 浏览器中的 unexpected error
和
Error: Unable to find a matching rewriter for {"source":"/api/**","run":{"serviceId":"next-js-base-api","region":"us-central1"}}
在控制台中。
确保通过 运行ning:
更新到最新版本的 Firebase CLI
npm install -g firebase-tools@latest
这将使您能够重写云 运行 个实例,就像您尝试做的那样。
实际上,我运行刚才,查看部署的cloud-运行 helloworld容器的日志,发现custom-domain/helloworld实际上映射到container-domain/helloworld 而不是简单地映射到容器域/。为了解决这个问题,我不得不在我原来的 Node.js 程序中添加一个额外的 app.get 规则:
app.get('/helloworld', (req, res) => {
然后调用 custom-domain/helloworld 成功了。
如果以上所有答案都不能帮助您,那么对我有用的解决方法是:
- 查看 firebase 托管使用的项目中的 public 目录。
- 删除 firebase 在检查时创建的 index.html 文件
firebase 初始化步骤。
删除生成的 index.html 文件后,它能够 运行 我的云 运行 容器重写。
我正在使用我的 firebase 主机设置重定向(重写),以便我可以从 google 云 运行 运行ning 调用 api here.
我已经尝试从 "/api/**"
更改重写字符串(应该将所有内容捕获到页面。com/api/** 并将其发送到函数)。删除 index.html 并交换到 "**"
以捕获包括索引在内的所有路径。到目前为止没有任何效果。
我的主机 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 returns 非崩溃(不重定向),在浏览器中输出 cannot GET /api
导航到 api/wkapi(被 api 端点)returns 浏览器中的 unexpected error
和
Error: Unable to find a matching rewriter for {"source":"/api/**","run":{"serviceId":"next-js-base-api","region":"us-central1"}}
在控制台中。
确保通过 运行ning:
更新到最新版本的 Firebase CLInpm install -g firebase-tools@latest
这将使您能够重写云 运行 个实例,就像您尝试做的那样。
实际上,我运行刚才,查看部署的cloud-运行 helloworld容器的日志,发现custom-domain/helloworld实际上映射到container-domain/helloworld 而不是简单地映射到容器域/。为了解决这个问题,我不得不在我原来的 Node.js 程序中添加一个额外的 app.get 规则:
app.get('/helloworld', (req, res) => {
然后调用 custom-domain/helloworld 成功了。
如果以上所有答案都不能帮助您,那么对我有用的解决方法是:
- 查看 firebase 托管使用的项目中的 public 目录。
- 删除 firebase 在检查时创建的 index.html 文件 firebase 初始化步骤。
删除生成的 index.html 文件后,它能够 运行 我的云 运行 容器重写。